我找到了……任何物体都是一样的……
*/ 创建一个文件,说明哪些字段是复杂的 文件名称:name_of_the_action-conversion.properties
例如我的动作类是 BenefInfos.java,所以我的属性文件是:BenefInfos-conversion.properties
benef.nirBenef=model.BigDecimalConverter
benef.nirAssure=model.BigDecimalConverter
该值是模型包中我的转换器类 BigDecimalConverter 的名称
*/ 创建 BigDecimalConverter.java
public class BigDecimalConverter extends DefaultTypeConverter {
@Override
public Object convertValue(Map Context, Object values, Class classe) {
BigDecimal field = null;
if(classe == BigDecimal.class) {
String value = ((String[]) values)[0];
field = new BigDecimal(value);
}
return field;
}
}
*/现在如果你想验证,你必须创建自己的验证器。这样做:
*/ 添加 validators.xml 来声明你自己的验证器:
<validators>
<validator name="socialsecurityformat"
class="validator.SocialSecurityValidator"
/>
</validators>
*/创建验证器类(这里是SocialSecurityValidator)
public class SocialSecurityValidator extends FieldValidatorSupport{
public void validate(Object o) throws ValidationException {
String fieldName = this.getFieldName();
if(this.getFieldValue(fieldName, o) != null) {
String value = ((BigDecimal)this.getFieldValue(fieldName, o)).toString();
Pattern p = Pattern.compile("^(1|2|7)\\d{14}$");
Matcher m = p.matcher(value);
if(!m.matches()) {
addFieldError(fieldName, o);
}
}
}
}
*/ 最后在验证 xml 文件中,您使用自己的验证器。
<field name="benef.nirBenef">
<field-validator type="required">
<message key="error.requiredField"/>
</field-validator>
<field-validator type="socialsecurityformat">
<message key="error.securityNumber"/>
</field-validator>
</field>
希望这会有所帮助