JSR-303
バリデーションを使用して、その結果をjsp
ページに表示しようとしています。ここで示しjsp
ページのコード片があるエラー:フォーム:errorsタグ付きスプリングJSR-303
@PostMapping(params = "next")
public String next(@Valid @ModelAttribute(COMMAND_NAME) final ProjectNewDetailsCommand cmd,
final Errors errors,
final Model model,
final HttpServletRequest request) {
まず、私のために働いたソリューションは、カスタムValidator
クラスを書いている:私は次のように持っているコントローラで
<c:set var="Error">
<form:errors path="name"/>
</c:set>
...
<spring:transform value="${Error}"/>
@Override
public void validate(Object o, Errors errors) {
errors.pushNestedPath("project");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", "error.project.creation.name.required");
errors.popNestedPath();
}
この場合、messages.properties
からの適切なメッセージが適用され、UI:
error.project.creation.name.required=The name must not be blank.
私はJSR-303
のアノテーションを使用する場合、別のケースである:messages.properties
で
public class Project {
...
@Size(max = 100, message = "error.project.creation.size")
private String name;
キーerror.project.creation.size
下のメッセージがあるが、私もそれはいくつかの中で述べられていますように、キーSize.command.project.name
にメッセージを追加しようとしましたがソースのコントローラ内のError
オブジェクトも空ではなく、検証エラーが含まれています。
Caused by: javax.servlet.jsp.JspTagException: No message found under code 'Size' for locale 'en_US'.
at org.springframework.web.servlet.tags.MessageTag.doEndTag(MessageTag.java:200)
何らかの理由でSpring
代わりerror.project.creation.size
またはSize.command.project.name
のSize
エラーコードを適用しようとしていることを意味:私はJSR-303
で、このアプローチを使用する場合でも、私は次のエラーを得ました。なぜこれが起こっているのか、これを修正する方法は?
を私は 'error.projectに一致するように、' 'メッセージ= "{error.project.creation.sizeを}" 書かれるべきだと思います。 creation.size' –
私もこれを試しました。私のために働かなかったので、私はいくつかの他の問題があると思う。 –
これを試してみると、Errorオブジェクトの内容は何ですか?メッセージは存在しましたか? –