1

フォームのサーバー側の検証を構成しています。私の問題は、コントロールが Areavalidator クラスに入るときです。

    @Override
    public boolean supports(Class<?> clazz) {
    return Area.class.isAssignableFrom(clazz);
}

上記のメソッドから、コントロールは再びコントローラー クラスに戻り、エラー セットではゼロ エラーが表示されます。@Override public void validate(Object target, Errors errors) {

    Area object = (Area)target;

    ValidationUtils.rejectIfEmptyOrWhitespace(errors, "areaName",
            "label.areaNameRequired");

   if(object.getAreaCode().length()==0)

    {
        {
            errors.rejectValue("areaCode", "label.areaCode", null);
        }

    }   

    }

検証用のコントローラー クラスのコード

    @Autowired
    private AreaValidator areaValidator;

    @InitBinder("area")
    protected void initBinder(WebDataBinder binder) {
        binder.setValidator(areaValidator);
    }

    @RequestMapping(value = "/saveGridArea", method = RequestMethod.POST)
    public String saveCountry(@ModelAttribute @Valid Area area,ModelMap map,BindingResult error) {

        if (error.hasErrors()) {
            return "area";
        } 
4

1 に答える 1

0

これは、 を実行すると、の隣に@Valid対応する権利があると予想されるためです。ここでは、あなたが間にあるため、フレームワークがリンクされた/関連付けられたエラーを に関連付けることができなくなります。BindingResultmodelAttributeModelMapmodelAttribute

メソッドの変数の順序を変更するだけです。

これを試してみてください。うまくいくはずです:

@RequestMapping(value = "/saveGridArea", method = RequestMethod.POST)
public String saveCountry(@ModelAttribute @Valid Area area,BindingResult error, ModelMap map){
        ...
}
于 2013-01-25T16:55:44.697 に答える