3

これが私が立ち往生している問題です。実際、いくつかのフィールドを検証するために必要なすべての機能を実装しましたが、それでも 400 エラーが発生します。私が作成したものを、Spring 3 for Professionals の例 (ソースコードを取得) と比較しました。それらの例は完全に機能し、違いを見つけることができませんでした... :(((-おそらく、これも注意不足によるものです。

したがって、検証するために適切に注釈が付けられたいくつかのフィールドを次に示します。

@NotEmpty(message="{validation.firstname.NotEmpty.message}") 
@Size(min=3, max=60, message="{validation.firstname.Size.message}")
@Column(name = "FirstName") 
public String getFirstName() { 
    return firstName;
}

@NotEmpty(message="{validation.lastname.NotEmpty.message}") 
@Size(min=1, max=40, message="{validation.lastname.Size.message}")
@Column(name = "LastName") 
public String getLastName() { 
    return lastName;
}

messages.properties 内のメッセージ:

validation.firstname.NotEmpty.message=First name is required
validation.lastname.NotEmpty.message=Last name is required
validation.firstname.Size.message=First name must be between {min} and {max}
validation.lastname.Size.message=Last name must be between {min} and {max}

はい、保存の成功に関連する別のメッセージを正常に取得できるため、messages.properties に到達できます。

コントローラー内のメソッドの関連部分は次のとおりです。

public String update(@Valid Employee employee,...
public String create(@Valid Employee employee,...

つまり、必要な @Valid アノテーションをそこに置きます。

次に、私の servlet-context.xml の一部:

<annotation-driven validator="validator"/>

<beans:bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> 
    <beans:property name="validationMessageSource" ref="messageSource"/> 
</beans:bean>

これが私のedit.jspxの関連部分です

<form:label path="firstName"> ${labelEmployeeFirstName}* </form:label> 

<form:input path="firstName" /> 
<div> <form:errors path="firstName" cssClass="error" /> </div> 
<p/> 

<form:label path="lastName">${labelEmployeeLastName}* </form:label> 

<form:input path="lastName" /> 
<div> <form:errors path="lastName" cssClass="error" /> </div> 

詳細を明確にするために、ここに何か他のものを入れる必要があるかどうかはわかりません...

4

1 に答える 1

-2

コントローラ メソッドの引数から @Valid アノテーションを削除します。それはまだあなたに400を与えますか?

于 2013-06-13T14:17:42.823 に答える