[SPRING] 스프링 MVC 폼 유효성 검사가 작동하지 않습니다.
SPRING스프링 MVC 폼 유효성 검사가 작동하지 않습니다.
나는 봄 4를 사용하고있다. 내 양식에 다음 변수가 포함되어 있습니다.
@NotNull
@Email
private String email;
@NotNull
private String firstName;
@NotNull
private String lastName;
@Digits(fraction = 0, integer = 10)
private String phoneNo;
@NotNull
private String role;
내 컨트롤러 :
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping(value = "/add", method = RequestMethod.POST)
public ModelAndView add(@ModelAttribute("user") @Valid UserBean user, BindingResult result) {
String message;
if (result.hasErrors() && user != null)
return new ModelAndView("userAdd");
else {
userService.addUser(user);
message = "Successfully added user";
}
return new ModelAndView("success", "message", message);
}
@RequestMapping(value = "/register")
public ModelAndView register(@ModelAttribute("user") UserBean user, BindingResult result) {
List<String> roles = new ArrayList<String>();
roles.add("Receiver");
roles.add("Resolver");
roles.add("Logger");
Map<String, List<String>> model = new HashMap<String, List<String>>();
model.put("roles", roles);
return new ModelAndView("userAdd", "model", model);
}
}
내 JSP :
<c:url var="userAdd" value="user/add.do" />
<sf:form method="post" action="${userAdd}" modelAttribute="user">
<table>
<tr>
<td>First Name</td>
<td><sf:input path="firstName" /><br /> <sf:errors
path="firstName" cssClass="error" /></td>
</tr>
<tr>
<td>Last Name</td>
<td><sf:input path="lastName" /><br /> <sf:errors
path="lastName" cssClass="error" /></td>
</tr>
<tr>
<td>Email</td>
<td><sf:input path="email" /><br /> <sf:errors
path="email" cssClass="error" /></td>
</tr>
<tr>
<td>Phone No.</td>
<td><sf:input path="phoneNo" /><br /> <sf:errors
path="phoneNo" cssClass="error" /></td>
</tr>
<tr>
<td>Role</td>
<td><sf:select path="role" items="${model.roles}" /><br /> <sf:errors
path="role" cssClass="error" /></td>
</tr>
<tr>
<td><input type="submit" value="Submit" /></td>
</tr>
</table>
</sf:form>
입력을 비워두면 양식이 유효성을 검사하지 않고 오류가 발생하지 않습니다. BindingResult에는 오류가 없습니다.
내 라이브러리는 다음과 같습니다.
내 dispatcher-servlet.xml은 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- Scans for annotated @Controllers in the classpath -->
<context:component-scan base-package="com.mj.cchp.controller">
<context:include-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>
<bean id="myBeansValidator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
<mvc:annotation-driven validator="myBeansValidator" />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/pages/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
</beans>
내 applicationContext입니다 :
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- Scans for annotated @Controllers in the classpath -->
<context:component-scan base-package="com.mj.cchp">
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.ibm.db2.jcc.DB2Driver" />
<property name="url" value="jdbc:db2://172.16.2.181:60000/CCHP" />
<property name="username" value="db2inst1" />
<property name="password" value="db2inst1" />
</bean>
</beans>
내 web.xml은 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>CCHP</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/application-context.xml</param-value>
</context-param>
<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
해결법
-
==============================
1.추가해야합니다.
추가해야합니다.
<bean id="myBeansValidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
과
<mvc:annotation-driven validator="myBeansValidator">
과
<!-- Hibernate Validator --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>4.2.0.Final</version> </dependency>
일해야한다!
-
==============================
2.비슷한 문제가 있었고, 내 경우에는 hibernate validator에 대한 의존성을 추가하는 것만으로도 충분했다. org.hibernate : hibernate-validator : 5.2.4.Final.
비슷한 문제가 있었고, 내 경우에는 hibernate validator에 대한 의존성을 추가하는 것만으로도 충분했다. org.hibernate : hibernate-validator : 5.2.4.Final.
유효성 검사는 LocalValidatorFactoryBean 빈에 의해 수행되며 그것에 관한 문서는 편리합니다 (여기).
그러나 동시에 @EnableWebMvc 주석을 사용하는 한 명시 적으로 LocalValidatorFactoryBean을 인스턴스화 할 필요가 없다는 점을 언급 할 필요가 있습니다. http://docs.spring.io/spring/docs/current/spring-framework-reference/html /mvc.html#mvc-config-validation
희망이 도움이됩니다.
-
==============================
3.이 문제를 해결할 방법을 찾았는지 확실하지 않습니다. 나는 똑같은 문제에 직면하고있다. 나는 그것을 해결할 수 있었다. 필자의 설정에 관한 문제는 완전히 수동이며 lib 폴더 안에 hibernate-validator-5.1.3.Final-dist.zip 전체를 배치하여 큰 실수를 저지르고있다.
이 문제를 해결할 방법을 찾았는지 확실하지 않습니다. 나는 똑같은 문제에 직면하고있다. 나는 그것을 해결할 수 있었다. 필자의 설정에 관한 문제는 완전히 수동이며 lib 폴더 안에 hibernate-validator-5.1.3.Final-dist.zip 전체를 배치하여 큰 실수를 저지르고있다.
그래서 내가 한 것은 dist 폴더에있는 "hibernate-validator-5.1.3.Final-dist.zip"안에이 6 개의 파일을 넣고 이것을 웹 응용 프로그램 lib에 넣는 것입니다.
이 문제가 해결되었습니다.
-
==============================
4.나는 또한 내 전체 코드가 제대로 작성된 동일한 문제에 직면했다.
나는 또한 내 전체 코드가 제대로 작성된 동일한 문제에 직면했다.
문제는 내가 사용하고있는 jar 파일의 다른 버전이었다.
필자는 최대 절전 모드 - 유효성 검사기 - cdi- 5.0.7. 최종 및 최대 절전 모드 - 6.0.2 최종.
jar 파일의 버전이 동일한 지 확인하십시오.
같은 버전의 모든 병을 보관할 때 문제가 해결되었습니다. 이게 당신을 도울 수 있기를 바랍니다.
-
==============================
5.필자의 경우, hibernate-validator jar는 런타임에는 사용할 수 없다. 내가 복사 한 ... / WEB-INF / lib / 그럼 제대로 작동했습니다.
필자의 경우, hibernate-validator jar는 런타임에는 사용할 수 없다. 내가 복사 한 ... / WEB-INF / lib / 그럼 제대로 작동했습니다.
-
==============================
6.나는 똑같은 문제에 직면했다. dispatcher-servlet.xml 파일에 아래 명령문을 추가하여 해결되었습니다.
나는 똑같은 문제에 직면했다. dispatcher-servlet.xml 파일에 아래 명령문을 추가하여 해결되었습니다.
<mvc:annotation-driven />
from https://stackoverflow.com/questions/21478299/spring-mvc-form-validation-not-working by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring 4 with thymeleaf 국제화는 자원 특성 파일에서 메시지를 식별하지 못함 (0) | 2019.04.12 |
---|---|
[SPRING] 메타 주석 및 테스트 클래스에서 @ActiveProfiles가 작동하지 않음 (0) | 2019.04.12 |
[SPRING] Grails 플러그인 빈의 오버라이드 메소드 (0) | 2019.04.12 |
[SPRING] Maven + Spring + Hibernate : hibernate3-maven-plugin hbm2ddl은 "원인 : java.lang.NullPointerException"이유로 실패합니다. (0) | 2019.04.12 |
[SPRING] Spring MVC 애플리케이션 - 세션 범위의 빈 값을 어떻게 설정 하는가? (0) | 2019.04.12 |