지난 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>
이것은 봄 유효성 검사의 첫 번째 프로그램이므로 낮은 점수를 받았지만 친절하게도 내 문제의 해결책을 제시 할 수 있습니다.
한 가지는 정규식을 정의한 다음 확인하십시오. :) – user3217843
어느 버전의 스프링을 사용하고 있습니까? – Jaiwo99
스프링 3.0을 사용하고 있고 내 스프링 구성 파일을 추가했습니다 –