Field Validator의 type을 변환(conversion) validator로 정의하면, field의 형변환에 대한 첵크를 제어할 수 있다. (역자: 클라이언트와 서버의 사이는 모두 String형이기 때문에 Bean에 값을 넣을 때 형변환이 일어난다.
파라메터
- fieldName - validaiton을 시행할 필드명. 일반(Plain) Validator로 정의한 경우 필수.
예제
<!-- Plain Validator Syntax -->
<validator type="conversion">
<param name="fieldName">myField</param>
<message>Conversion Error Occurred</message>
</validator>
<!-- Field Validator Syntax -->
<field name="myField">
<field-validator type="conversion">
<message>Conversion Error Occurred</message>
</field-validator>
</field>
변환 validation실패시, 입력치 유지하기
변환에 실패해서 입력화면으로 되돌아가면 해당 필드의 입력값이 클리어된다. 원래의 값을 유지하려면 repopulateField속성을 true로 정의하면 된다.
myJspPage.jsp
<s:form action="someAction" method="POST">
....
<s:textfield
label="My Integer Field"
name="myIntegerField" />
....
<s:submit />
</s:form>
struts.xml
<action name="someAction" class="example.MyActionSupport.java">
<result name="input">myJspPage.jsp</result>
<result>success.jsp</result>
</action>
MyActionSuport.java
public class MyActionSupport extends ActionSupport {
private Integer myIntegerField;
public Integer getMyIntegerField() {
return this.myIntegerField;
}
public void setMyIntegerField(Integer myIntegerField) {
this.myIntegerField = myIntegerField;
}
}
validation.xml
<field name="myIntegerField">
<field-validator type="conversion">
<param name="repopulateField">true</param>
<message>Conversion Error (Integer Wanted)</message>
</field-validator>
</field>
원문: http://struts.apache.org/2.x/docs/conversion-validator.html
2009년 3월
허 련호(airless at funit.net)