ZK MVC:在两个zul页面的请求中传递属性

时间:2013-11-13 03:58:10

标签: request zk zul

我正在尝试将对象从一个zul页面传递到另一个zul页面。其中:

  1. 两个zul页面都有自己的作曲家。
  2. 我想在第一个zul的作曲家中设置对象的值。
  3. 想要在第二个zul的作曲家中获得它。
  4. 我已经尝试过executions.sendredirect(),但是它清除了object的值,forward()抛出一个异常,说“使用sendRedirect代替处理用户请求”。

1 个答案:

答案 0 :(得分:1)

你的问题是范围。

在ZK中,与其他Web应用程序框架一样,您可以访问许多不同的范围:webapp,桌面,页面,会话,请求等。如果您从两个不同的URL提供两个不同的页面,那么这些页面将具有不同的请求范围。

从一个请求移动到另一个请求时,您可以传递有关请求URL的信息:

Executions.sendRedirect("page2.zul?myId=1234")

然后,在第2页的作曲家中,您可以从Execution中检索此值:

Execution execution = Executions.getCurrent();
execution.getParameter("myId");

这是标准HTTP query string商家,因此您仅限于此处的文字和数字。对于传递数据库ID这样的东西,这可能非常方便。

更强大的解决方案可能是利用ZK的其他一些范围。例如,您可以将对象放在用户的Session范围内。有关实施细节,请参阅我对ZK session variable with a menu的回答。请注意,使用Session时,您不再受限于文字,但可以存储实际的Object