java - 如何处理多个连续的表单和 Java 对象

标签 java forms session web-applications playframework

假设我在 Web 应用程序中有一对表单,每个表单都显示在单独的 html 文件中:

form1.html

<form action="my_controller.java" method="POST">
  First name:<br>
  <input type="text" name="firstname" value="Mickey">
  <br>
  Last name:<br>
  <input type="text" name="lastname" value="Mouse">
  <br><br>
  <input type="submit" value="Next">
</form>

form2.html

<form action="my_controller.java" method="POST">
  Address:<br>
  <input type="text" name="address" value="123 My Way">
  <br>
  Favorite Color:<br>
  <input type="text" name="color" value="Green">
  <br><br>
  <input type="submit" value="Submit">
</form>

假设我还有一个 Java 对象:

public Person(String firstName, String lastName, String address, String favColor)

我的问题是我应该如何处理此表单的提交和控制?我接受以下选择:

  1. form1 上创建一个 Person 对象 POST 并为其余字段写入空字符串的 do DB,然后更新 form2 上的 DB POST
  2. 构建 Person 对象客户端并使用 AJAX 创建新页面的幻象
  3. 通过 Controller 使用 session ,并在用户浏览表单时传递此信息

看起来选项三是最好的解决方案,尽管我不太确定如何做到这一点。如果选项 3 是最佳实践,我该如何使用 play framework 来执行此操作

最佳答案

首先存储两个字段firstnamelastnamePerson对象,您在 Controller 中从客户端接收到的对象。

    Person person = new Person();
    person.firstname = fname;
    person.lastname = lname;    
    // Remaining two fields will be null in this point

填充 Play Form与现有的 person 对象

Form<Person> personForm = Form.form(Person.class).fill(person);

通过将 personForm 作为参数传递来移动到 form2

return redirect(views.html.person_form2.render(personForm));

在您的 Form2 中制作firstnamelastname隐藏并填充 pesronForm 中的值其他两个字段将照常可见,其值保留为空。

    @(personForm: Form[Person])

    <!-- create hidden field for firstname and lastname like following -->
    <input type="hidden" name="firstname" value='@personForm.field("firstname").value' >

提交后,您将在 Controller 中获得所有四个字段值。

Form<Person> personForm = Form.form(Person.class) Person person = personForm.bindFromRequest().get();

关于java - 如何处理多个连续的表单和 Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27353697/

相关文章:

JavaFX如何将文本写入textArea中的新行?

php - 如何将第一个空值添加到从 MYSQL 获取数据的表单中的下拉字段

c# - 如何删除 asp.net 中的特定 session ?

ios - Swift:无法在 Xcode 中导入框架,遇到错误: 'no such a moudle'(使用 cocoapods 安装)

node.js - 使用 Redis 存储的 Express session 无法创建 session

javascript - 如何在 Javascript 中读取 ASP.net Session 对象?

java - 字段不能是静态的吗?

java - Wicket multiuploadField 自动提交

java - 正则表达式 (Java) 异常 - 寻求解释

php - MySQL 的输出