【问题标题】:Managing page flow in Play! framework tags在 Play 中管理页面流!框架标签
【发布时间】:2011-11-21 20:43:52
【问题描述】:

在使用 Play 框架构建的网络应用程序中,我有一个结帐页面,其中列出了用户的购物车以及地址表单。我将地址表单创建为标签 (addressform.html),以便可以重复使用。

checkout.html:

#{if shopcart.cartItems}
    #{shopcartview customer:customer,shopcart:shopcart/}
    #{addressform customer:customer /}
#{/if}

地址表单有一个表单元素#{form @setAddressInfo()}

调用如下控制器方法

public static void setAddressInfo(Long customerId,...) {
   ...
   showPaymentPage();
}

如果一切顺利,将进入支付页面。

当我想在我的confirmOrder 页面上重用addressform 时,就会出现问题。

confirmOrder.html:

#{if shopcart.cartItems}
        #{shopcartview customer:customer,shopcart:shopcart/}
        #{addressform customer:customer /}
#{/if}

<a href="link_to_payment_page">editPaymentInfo</a>

在这里,如果用户更改地址并提交表单,setAddressInfo() 方法将在成功完成后打开付款页面。这不好——用户可能根本不想更改付款信息。此外,我为那些想要更改付款信息的用户提供了一个付款页面链接。我希望显示相同的 OrderConfirm 页面,以便用户可以单击 Submit Order 按钮。

那我该怎么做呢?在这种情况下,我肯定可以重用地址表格,对吗?你能帮我弄清楚在这种情况下如何管理页面流吗?

【问题讨论】:

  • 简单地说,您可以在地址表单标签中添加一个标志,说明“是否重定向到最后付款”...
  • 以后请在.?(句尾)之后使用空格,在逗号之后使用空格,而不是之前。

标签: java playframework page-flow


【解决方案1】:

您可以提供一个参数,指示将用户重定向到哪里,通过隐藏输入或通过 java 参数之类的 setAddressInfo()。两种选择:

<input type="hidden" name="urlToRedirectUserTo" value="urlToRedirecTo(maybe using @{}..)"/>

或者:

#{form @setAddressInfo("urlToRedirectUserTo")}

在你做的动作中:

public static void setAddressInfo(String urlToRedirectUserTo) { 
   ...
   ...
   ...
   redirect(urlToRedirectUserTo);
}

有更好的选择可以使它更打字和更不容易出错,但这个可能已经足够了。

【讨论】:

    猜你喜欢
    • 2011-03-12
    • 1970-01-01
    • 2016-04-16
    • 2020-08-05
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    相关资源
    最近更新 更多