Spring + hibernate +表单

时间:2012-05-04 18:16:53

标签: spring hibernate jsp

我有一个用户实体:

@Entity
@Table(name = "user")
public class User implements Serializable{
private enum Sex {MALE, FEMALE};

@Id @GeneratedValue
private Long id;
@NotNull
private String name;
    @NotNull
    private String password;
}

控制器:

@Controller
public class HomeController {
@RequestMapping("/addUser")
public String showHomePage(Map<String, Object> map) {
    map.put("user", new User());
    return "addUser";
}

并在jsp文件中形成

<form:form method="post" action="add" commandName="user"> 
     <form:input path="name"/>
     <form:input path="password"/>
     <form:input path="confirm-password"/>
</form:form>

此表单生成错误,因为confirm-password中没有User.class字段。我当然可以将confirm-password字段作为@Transient添加到User.class,但如果我想将captcha字段添加到表单中,该怎么办呢?是否有另外一种方法可以添加额外的字段来形成?

1 个答案:

答案 0 :(得分:0)

将模型用作表单实体不是一个好习惯。您应该有一个bean或表单类来从视图中获取数据,而另一个用于模型。

原因是他们有不同的责任,因此需要映射到不同的类。它们通常非常相似,但这种分离促进了更清晰的编码并避免了安全漏洞,因为用户可以尝试使用请求篡改器(例如火灾bug)从视图中使用模型变量。

他们之间的这些小差异就像你上面列出的那样,证明了另一个类的创造。