我正在使用Spring MVC 3。这是我的模型,
public class MarketPlace {
@NotNull(message="This Template Name is required")
@Size(max=50)
private String templateName;
public String getTemplateName() {
return templateName;
}
public void setTemplateName(String templateName) {
this.templateName = templateName;
}
}
这里是控制器方法,
public String PublishForm(@Valid MarketPlace m, BindingResult result) {
if (result.hasErrors()) {
return "Error";
}
return "Sucess";
}
但是hasErrors总是false。然后我把这些行放到dispatcher - servlet中,
xmlns:mvc="http://www.springframework.org/schema/mvc"
................
mvc:annotation-driven /
但是现在,NetBean显示了这个错误,
The matching wildcard is strict, but no declaration can be found for element 'mvc:annotation-driven.
有些人建议我去做"设置JSR-303提供程序在类路径上"
这是什么意思?我的应用程序里有这些罐子,
libslf4j-api-1.6.2.jar,
build/web/Resources/validation-api-1.0.0.GA.jar,
build/web/Resources/hibernate-validator-4.2.0.Final.jar
编辑:您必须确保以下xsi:schemaLocation
条目存在:
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
另外看一下这个教程,它解释了如何使用JSR-303提供程序。
http://www.openscope.net/2010/02/08/spring mvc jsr - 303 - 3 - 0和- aka javax - validation/
更新:坦率地说,我更喜欢URL映射的另一种方式:所有请求的jsp都映射到*.html url。
现在您的Dispatcher servlet看起来像这样:
<display-name>MyServlet</display-name>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
你的Spring URL映射看起来像这样:
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>