【问题标题】:Adding additional information when rendering a form in Play! 2.0.2在 Play 中呈现表单时添加附加信息! 2.0.2
【发布时间】:2012-07-23 11:32:24
【问题描述】:

我正在通过 LinkedIn API 向用户模型添加更多信息,所有这些代码都在控制器中处理。将信息添加到模型后,我在新视图中重新呈现(用户类的)表单。有什么方法可以将附加信息附加到此表单(内置于 Play!),以显示 API 调用更新了哪些字段?

用例:

  1. 用户进入查看/编辑个人资料页面

  2. 用户点击“从领英导入信息”

  3. 对 LinkedIn API 进行 API 调用 - 然后将用户返回到特定控制器(称为 Social),该控制器处理 JSON 到 JAVA 的数据转换,并将新数据绑定到用户模型,并将更新后的模型存储在数据库中。

  4. 控制器然后将用户重定向到 index() 控制器,该控制器再次呈现视图/编辑配置文件视图。 (现在我想添加一个功能,用户可以看到他的个人资料中的哪些字段由于 API 调用而被修改)。

例如,类似于form.errrors() 的东西(称为 form.info() 或其他东西)。如果这是不可能的,那么是否有任何方法可以访问 FieldElements,并可能向它们添加一些东西?

干杯!

【问题讨论】:

    标签: java forms playframework playframework-2.0


    【解决方案1】:

    我没有清楚地看到问题。

    当控制器将用户重定向到其个人资料页面时,您只需使用数据库中的数据填充表单。

    类似的东西:

    public static Result profile(String userId) {
        Form<User> userForm = form(User.class);
    
        User user = User.findById(userId); // data have been set in the database
        if (user != null) {
             userForm = userForm.fill(user);
        }
    
        return redirect(your.view.render(userForm));
    }
    

    【讨论】:

    • 问题不在于渲染视图 - 问题在于渲染视图(和表单)以显示 API 调用更改了哪些(可能不是全部)字段。例如:名字和姓氏可能会改变,但不是电子邮件和地址等),我们希望以某种方式在视图中显示它。
    • 啊,好吧,所以你必须以某种方式存储此信息。也许使用flash() 范围(playframework.org/documentation/2.0/JavaSessionFlash)。
    • 当然可以!有什么方法可以将 flash-message 绑定到输入字段?
    • 我们最初的想法是在表单中每个更改的输入元素的 FieldElements 中添加信息,您知道是否可以通过控制器以任何方式访问 FieldElements 以进行输入?
    • 不知道有没有可能。另一种选择是扩展Form 类,以添加修改字段列表。
    猜你喜欢
    • 1970-01-01
    • 2021-10-24
    • 2020-04-28
    • 1970-01-01
    • 2013-05-17
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多