gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 12:09:18 27 4
gpt4 key购买 nike

假设我在 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com