java - Spring MVC 表单处理和 Spring 标签

标签 java spring forms spring-mvc

我已经研究 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" />

请注意,firstnamelastname 属性都不存在于 Student 类定义中。我可以连接这两个值并将其放入 name 中。

对于这种情况,我是否必须创建一个新的 bean 类来定义该表单的属性?这对我来说似乎有点多余。

thisViewModel 的东西,解决方案吗?

最佳答案

创建一个“表单支持对象”,即特定于您的表单的类。将此 FBO 中的值复制到您的实体类。

如果您的表单与数据库实体不同,这并不多余。

如果有很多字段,请使用 Dozer 等工具来自动执行此操作。

不过,在数据库中存储年龄和全名并不是一个好主意。最好存储出生日期和名字/姓氏。

关于java - Spring MVC 表单处理和 Spring 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31638681/

相关文章:

java - preparedStatement.setString(1 ,"null"),被解释为 null 而不是字符串(在preparedStatement.addBatch()之后)

SpringSource 包存储库更改

javascript - 获取 html 表单信息并使用 ajax 推送到 PHP

forms - 为什么拥有的表单在所有者表单本身之后被销毁?

php - 如何以在线形式删除 g-recaptcha-response?

java - 查找 java api 的 neo4j 库

java - 如何在 Apache Flink 中正确初始化任务状态?

java - 我需要锁吗?

java - 多个动态 HTTP 端点

java - 使用 iText 从多个模板创建单个 PDF 文件