0

送信されたテーブルを Spring で検証しようとしていますが、送信後にポートレットをリロードするだけです (問題ありませんが、エラー メッセージが表示されるはずです)。

コードの重要な部分:

私のJSP

<form:form method="post" action="${submitFormLink}" modelAttribute="formObject" commandName="formObject" enctype="multipart/form-data">
    <form:errors path="*" cssClass="errorblock" element="div" />
    <table>
        <tr>
            <td>
                <form:input type="text" path="someVar"/>
            </td>
            <td>
                <form:errors path="someVar" cssClass="error" />
            </td>
        </tr>
    </table>
</form:form>

私のコントローラー

@RequestMapping
public String create(Model model) throws IOException {
    model.addAttribute("formObject", new FormObject());
    return "view";
}

@ActionMapping(params = {"action=submit"})
public void submit(ActionRequest request, @Valid @ModelAttribute("formObject") FormObject formObject,
                   ActionResponse response) throws IOException, RepositoryException,
                    PortalException, SystemException {
    // some unimportant stuff
    // I want to validate automatically not by calling BindingResult
}

私も含めました

<mvc:annotation-driven />

私の foo-context.xml で、次のように FormObject 変数の 1 つに制約を設定します。

@Size(min = 1, max = 35, message = "Enter between 1-35 characters.")
private String someVar;

私のエラー ブロックは、送信後にエラーで満たされず、<td>検証が成功したかのように空のままになります。

設定に関して何が欠けていたのか、どこが間違っているのか教えてください。ありがとうございました!

4

1 に答える 1

0

あなたが言うとき // I want to validate automatically not by calling BindingResult、私はあなたが bindingResult.hasErrors () を使いたくないという意味だと思いますか?

私の知る限り、検証エラーが発生した場合に何をしたいかを明示的に定義する必要があります。@Valid アノテーションはモデル属性を検証しますが、バインディング結果を使用してエラー後の動作をコントローラーで明示的に変更する必要があります

if (bindingResult.hasErrors())
        return "someView";
于 2013-10-09T14:09:22.003 に答える