我發現它...它爲任何對象同樣的事情。 。
* /創建一個文件,說什麼場(S)是/是文件的複雜 名稱: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>
希望這是有益
好,首先我可以使用需要,而不是requieredString – mlwacosmos
秒驗證,我要創建一個擴展DefaultTypeConverter以確保帕拉姆攔截器做他的工作 – mlwacosmos
一類,但它仍然看起來像我的正則表達式驗證器不工作了......所以這是現在的問題 – mlwacosmos