私はそれを見つけました...それはどのオブジェクトでも同じです..
*/ どのフィールドが複雑かを示すファイルを作成します ファイルの名前: 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;
}
}
*/VALIDATE を実行する場合は、独自のバリデーターを作成する必要があります。そうするために :
*/ 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>
これが役立つことを願っています