【问题标题】:Playframework forms游戏框架形式
【发布时间】:2015-07-31 02:39:34
【问题描述】:

我正在创建一个表单以允许用户编辑我的对象,但似乎只有表单中可编辑的对象字段在我的控制器中可用,一旦提交表单。我的示例是我在表单中显示的用户对象,以允许用户编辑名称字段,当他们提交表单时,我的控制器需要确定这是新用户还是现有用户。为了确定这一点,我检查了 ID 字段,但由于 ID 字段在表单上不可编辑,因此当我在控制器中检查它时它为空。

我错过了什么吗?

【问题讨论】:

  • 你能告诉我们你的代码吗?
  • 私有静态最终表单 userForm = Form.form(User.class);
  • 私有静态最终表单 userForm = Form.form(User.class);公共静态结果详细信息(长ID){最终用户用户= User.findById(id); ... Form 填充表格 = userForm.fill(user);返回 ok(edit.render(fillForm)); } 公共静态结果 save(){ Form boundForm = userForm.bindFromRequest();用户用户 = boundForm.get(); boundForm.get() 只返回表单中可编辑的类字段。如果我按照 Sivakumar 的建议使用 字段,我可以使用 boundForm.data().get("..") 来检索隐藏字段数据,但这很丑陋且不安全

标签: java playframework-2.3 ebean


【解决方案1】:

对于这种情况,请让您的 id 在模板中隐藏输入。以便在用户点击表单的提交按钮后,您可以在控制器中使用它。

<input type="hidden" name="id" value='@userForm.field("id").value' >

【讨论】:

  • 谢谢 Sivakumar,我知道我可以做到,但我想知道为什么没有比在控制器中包含我需要访问的表单中的每个字段更好的方法了。
  • 实际上,如果我隐藏该字段,它不会在提交的数据中返回。我需要让它可编辑,这当然不是我想要的。
  • @CrispyOz 您能否发布您隐藏在视图中的输入元素,并确保您的输入 name 属性应该与您的属性名称完全匹配。
  • Sivakumar 我可以使用 boundForm.data().get("id") 检索隐藏字段数据,但隐藏字段不安全。
  • @CrispyOz 如果没有在服务器端进行适当的验证,即使是可见字段也是不安全的。您需要验证传入的请求,无论它是否来自经过身份验证的人,如果它是然后处理休息,如编辑/删除,否则返回错误消息。
猜你喜欢
  • 2011-11-09
  • 2019-04-14
  • 1970-01-01
  • 2011-01-17
  • 2012-04-01
  • 1970-01-01
  • 2013-02-26
  • 2011-04-28
  • 1970-01-01
相关资源
最近更新 更多