我已经研究 Spring 一周左右了,但我觉得我在表单处理方面缺少一些东西。
例如,如果我有一个允许输入 Student
数据的表单,并且我有一个如下定义的 Student
bean:
public class Student {
private Integer age;
private String name;
private Integer id;
// and other getters and setters
}
然后我有一个表格:
<form:input path="name" />
<form:input path="age" />
<form:input path="id" />
以及处理该发布请求的 Controller 方法:
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(@ModelAttribute Student student) {
//do stuff
}
如果我想创建一个自定义表单,不直接添加包含 Student
所具有的每个属性的所有字段的“Student”,而是创建一个包含一些看起来复杂的字段的自定义表单,该怎么办与我们在模型中定义的 Student
完全不同。例如:
<form:input path="age" />
<form:input path="firstname" />
<form:input path="lastname" />
请注意,firstname
和 lastname
属性都不存在于 Student
类定义中。我可以连接这两个值并将其放入 name
中。
对于这种情况,我是否必须创建一个新的 bean 类来定义该表单的属性?这对我来说似乎有点多余。
是 this ,ViewModel 的东西,解决方案吗?
最佳答案
创建一个“表单支持对象”,即特定于您的表单的类。将此 FBO 中的值复制到您的实体类。
如果您的表单与数据库实体不同,这并不多余。
如果有很多字段,请使用 Dozer 等工具来自动执行此操作。
不过,在数据库中存储年龄和全名并不是一个好主意。最好存储出生日期和名字/姓氏。
关于java - Spring MVC 表单处理和 Spring 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31638681/