2012-10-04 7 views
2

Spring MVC 3, Hibernate, PostgresQL을 사용하여 사용자를 등록하고 싶다. 여기 Spring MVC로 비밀번호를 확인하는 가장 쉬운 방법

<form:form name="registerForm" method="post" 
     action="registerNewUser.html" commandName="user"> 

     <table> 

      <tr> 
       <td><spring:message code="label.userName" /></td> 
       <td><form:input path="userName" /></td> 
       <td><form:errors path="userName" cssClass="error" /></td> 
      </tr> 

      <tr> 
       <td><spring:message code="label.password" /></td> 
       <td><form:password path="password" /></td> 
       <td><form:errors path="password" cssClass="error" /></td> 
      </tr> 


      <tr> 
       <td><spring:message code="label.password" /></td> 
       <td><form:password path="retypePassword" /></td> 
       <td><form:errors path="retypePassword" cssClass="error" /></td> 
      </tr> 

      <tr> 
       <td colspan="2"><input type="submit" 
        value="<spring:message code="register.label" />" /></td> 
      </tr> 
     </table> 

    </form:form> 

내가 저장할 POJO입니다 :

@Entity 
@Table(name = "user_table") 
public class User { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "id") 
    private Long id; 

    @Column(name = "user_name", nullable = false, length = 50) 
    private String userName; 

    @Column(name = "password", nullable = false, length = 50) 
    private String password; 

    private String retypePassword; 
     // getters setters 

을 여기 컨트롤러의 관련 부분입니다 :

@RequestMapping(value = "/registerNewUser", method = RequestMethod.POST) 
public String saveNewUser(@ModelAttribute User user, BindingResult result, Model model, HttpSession session) { 

    UserValidator validator = new UserValidator(); 
    validator.validateUser(user, result, userService.existingUser(user)); 
    String ret = REGISTER_USER; 
    if (!result.hasErrors()) { 
     user.setPassword(PasswordEncripter.md5(user.getPassword())); 
     userService.save(user); 
     ret = goToPractice(user, model, session); 
    } 
    return ret; 
} 

때문에 여기 내가 제출 싶어 형태인가 retypePassword의 값을 DB에 저장하는 것은 낭비라고 생각합니다.

org.postgresql.util.PSQLException: ERROR: column user0_.retypepassword does not exist 

내가 쉽게 테이블에 열 "retypePassword"를 추가하여이 예외를 고칠 수 있지만, 나는 아직도 그 낭비입니다 느낌 : 나는 양식을 제출하는 경우를 제외하고 아래에 발생 . DB에 중복 데이터를 추가하지 않고 문제를 해결할 수있는 영리한 방법이 있습니까?

답변

9

엔터티에서 retypePassword를 @Transient으로 표시 할 수 있습니다. 이것은 테이블에 열을 만들지 않도록 최대 절전 모드로 전환하지만이 유효성 검사를 봄용 MVC와 바인딩하여 유효성을 검사 할 수 있습니다.

@Entity 
@Table(name = "user_table") 
public class User { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "id") 
    private Long id; 

    @Column(name = "user_name", nullable = false, length = 50) 
    private String userName; 

    @Column(name = "password", nullable = false, length = 50) 
    private String password; 

    @Transient 
    private String retypePassword; 
     // getters setters 
+1

빠른 답변 주셔서 감사합니다. –

관련 문제