2014-07-15 1 views
0

지난 2 일 동안이 문제가 발생했습니다. 나는 많은 게시물을 통해 갔지만 나는 내 질문에 대한 해결책을 찾지 못했습니다.데이터가 스프링 mvc의 바인딩 결과와 바인딩되지 않음

사실 저는 로그인 양식을 봄 유효성 검사를 사용하여 검증하려했지만 잘못된 입력을 받았더라도 오류가 표시되지 않더라도 모든 입력을 허용합니다.

예를 들어 전자 메일에 @NotEmpty 및 @Email 주석을 사용했는데 "user"와 같은 일반 입력을 받아 들일 수도 있습니다."잘못된 전자 메일 형식"으로 오류가 발생하지만이 오류는 Bindingresult에 바인딩되지 않습니다.

내 컨트롤러 : ContactController.java

import java.util.ArrayList; 
import java.util.List; 
import net.viralpatel.spring3.form.loginform; 

import javax.validation.Valid; 

import net.viralpatel.spring3.form.Contact; 
import net.viralpatel.spring3.form.ContactForm; 
import net.viralpatel.spring3.form.loginform; 

import org.springframework.stereotype.Controller; 
import org.springframework.ui.ModelMap; 
import org.springframework.validation.BindingResult; 
import org.springframework.web.bind.annotation.ModelAttribute; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.servlet.ModelAndView;@Controller{ 
@RequestMapping(value = "/get", method = RequestMethod.GET) 
    public String get(ModelMap model) { 
     loginform ud = new loginform(); 
     ud.setUser(""); 
     ud.setEmail(""); 
     model.addAttribute("lform",ud); 
     return "login"; 

    } 

    @RequestMapping(value="/login",method=RequestMethod.POST) 
    public String loginCheck(@ModelAttribute("lform") @Valid loginform lform, BindingResult result, ModelMap model) { 

     if (result.hasErrors()) { 
      return "login"; 
     } else { 
      model.addAttribute("lfobj", lform); 
      return "success";   

     } 
    } 

내의 login.jsp 파일 :

<form:form action="login.html" commandName="lform"> 
<table> 
<tr> 
    <td><font face="verdana" size="2px">User</font></td> 
    <td>:</td> 
    <td> 
    <font face="verdana" size="2"> 
    <form:input path="user" /> <form:errors path="user"></form:errors> 
    </font> 
    </td> 
</tr> 
<tr> 
    <td><font face="verdana" size="2px">Email</font></td> 
    <td>:</td> 
    <td> 
    <font face="verdana" size="2"> 
    <form:input path="email" /> <form:errors path="email"></form:errors> 
    </font> 
    </td> 
</tr> 
<tr> 
    <td><font face="verdana" size="2px">Phone</font></td> 
    <td>:</td> 
    <td> 
    <font face="verdana" size="2"> 
    <form:input path="phone" /> <form:errors path="phone"></form:errors> 
    </font> 
    </td> 
</tr> 
<tr> 
    <td><font face="verdana" size="2px">Blog</font></td> 
    <td>:</td> 
    <td> 
    <font face="verdana" size="2"> 
    <form:input path="blog" /> <form:errors path="blog"></form:errors> 
    </font> 
    </td> 
</tr> 
<tr> 
    <td> 
    <input type="submit" value="Submit" /> 
    </td> 
</tr> 
</table> 
</form:form> 

내 loginform.java :

import javax.validation.constraints.Size; 

import org.hibernate.validator.constraints.Email; 
import org.hibernate.validator.constraints.NotEmpty; 
import org.hibernate.validator.constraints.URL; 
import org.springframework.validation.BindingResult; 

public class loginform{ 

     @NotEmpty 
     private String user; 

     @NotEmpty 
     @Email 
     private String email;   

     @NotEmpty(message = "Phone should not be blank.") 
     @Size(min = 10,max = 10) 
     private String phone; 

     @NotEmpty(message = "Enter your blog URL") 
     @URL 
     private String blog; 
//get & set methods 
} 

내 봄-servlet.xml에 :

<context:annotation-config /> 
    <context:component-scan base-package="net.viralpatel.spring3.controller" /> 

    <bean id="jspViewResolver" 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="viewClass" 
      value="org.springframework.web.servlet.view.JstlView" /> 
     <property name="prefix" value="/WEB-INF/jsp/" /> 
     <property name="suffix" value=".jsp" /> 
    </bean> 

    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> 
     <property name="basename" value="props" /> 
    </bean> 

이것은 봄 유효성 검사의 첫 번째 프로그램이므로 낮은 점수를 받았지만 친절하게도 내 문제의 해결책을 제시 할 수 있습니다.

+0

한 가지는 정규식을 정의한 다음 확인하십시오. :) – user3217843

+1

어느 버전의 스프링을 사용하고 있습니까? – Jaiwo99

+0

스프링 3.0을 사용하고 있고 내 스프링 구성 파일을 추가했습니다 –

답변

0

귀하의 JSP 폼 태그는 HTTP 방식이 method="POST 속성이 없습니다 (제출 양식 데이터를이 속성 않고있다는 HTTP GET,이는 요청 처리기 메서드에 바인딩) :

<form:form method="POST" action="login.html" commandName="lform">... 
+0

나는 그 중 하나를 시도했지만 여전히 같은 문제가있다. –

+0

Bindingresult가 해당 오류 값을 가져 오지 않았다고 생각합니다. 매핑에 문제가있을 수 있습니다! –

+0

아직 코딩이 잘못되어 있는지 잘 모릅니다. ! –

1

가이 추가 당신의 봄 설정 :

<mvc:annotation-driven/> 

이것은 콩 검증을 가능하게합니다.

문서 : Reference

+0

을 추가함으로써 "org.springframework.validation.beanocalization.LocalValidatorFactoryBean # 0"이라는 이름의 빈을 생성하는 중 오류 발생 : init 메소드 호출에 실패했으며 중첩 예외는 java.lang.NoClassDefFoundError입니다. : org.hibernate.validator.internal.engine 클래스를 초기화 할 수 없습니다.ConfigurationImpl " –

+0

@Sripremrookie 당신의 lib에'hibernate-validator'를 추가하십시오. 링크는 다음과 같습니다 : http://hibernate.org/validator/downloads/ – Jaiwo99