这是我一直陷入的一个问题。实际上,我实现了所有必需的功能以验证我的几个字段,但是我仍然收到 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>
我不知道是否需要在此处添加其他内容以澄清更多...