21

form:errors注釈ベースの検証を使用していますが、フォームの 1 つでタグを使用してエラーを表示できません。メソッドをデバッグするとBindingResulthas エラーが表示されますが、何らかの理由でフォームに表示されません。他のフォームで動作していたので困惑していますが、何らかの理由でこの特定のフォームに問題があります。どんなポインタでも大歓迎です。

ここにコントローラーからのいくつかのコードがあります。コントローラーには @SessionAttribute として copyCartForm があります。

@RequestMapping(params="action=Confirm Copy", method=RequestMethod.POST)
public String copyCart(@Valid CopyCart copyCartForm, BindingResult result) {
    if (result.hasErrors()) {
        logger.debug("errors in form" + result.toString());
        return "copyshoppingcart";
    } else {
                    ...
                    ...
        return "redirect:/home";
    }
}

JSPで私はこれを試しました:

<form:errors path="*" cssClass="formError"/>

としても:

<form:errors path="fieldName" cssClass="formError"/>

どちらも機能しません。

4

5 に答える 5

43

これを機能させるために使用する必要があり@ModelAttributeました。したがって、フォームの前に@ModelAttribute("copyCartForm") @Valid CopyCart copyCartForm, BindingResult result)

于 2010-05-27T21:02:49.413 に答える
9

もう1つのアプローチ、何らかの理由で次の使用@ModelAttribute("copyCartForm")時に使用できない場合:

@RequestMapping(method=RequestMethod.POST)
public String post(@Valid CopyCart copyCartForm, BindingResult bindingResult, ModelMap modelMap) {
    if (bindingResult.hasErrors()) {
        modelMap.put(BindingResult.class.getName() + ".copyCartForm", bindingResult);
        return "copyshoppingcart";
    }
    return "redirect:/home";
}
于 2012-09-20T14:45:19.197 に答える
6

私は同じ問題に直面しました。

@ModelAttribute("attributeName")応答で検証エラーを取得するには、を使用する必要がありました。

于 2011-12-20T13:36:20.417 に答える
2

理由はわかりませんが、理解するまで多くの苦労をしましたが、Bean に Bean クラスとまったく同じ名前を付ける必要があります。したがって、copyCartForm は単なる copyCart である必要があります。

@RequestMapping(params="action=Confirm Copy", method=RequestMethod.POST)
public String copyCart(@Valid CopyCart copyCart, BindingResult result) {
    if (result.hasErrors()) {
        logger.debug("errors in form" + result.toString());
        return "copyshoppingcart";
    } else {
                    ...
                    ...
        return "redirect:/home";
    }
}

これは form タグでも変更する必要があります。

<form:form action="....." method="..." commandName="copyCart">
于 2016-09-14T22:36:38.130 に答える