1

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

  1. 两个 zul 页面都有自己的作曲家。
  2. 我想在 1st zul 的作曲家中设置对象的值。
  3. 并希望在 2nd zul 的作曲家中得到它。

我试过 executions.sendredirect(),但它清除了对象的值,forward() 抛出一个异常,说“使用 sendRedirect 来处理用户请求”。

4

1 回答 1

1

你的问题是范围。

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

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

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

然后,在 page2 上的作曲家中,您可以从以下位置检索此值Execution

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

这是标准的HTTP 查询字符串业务,因此您在此处仅限于文本和数字。不过,对于传递数据库 id 之类的东西,这可能非常方便。

一个更强大的解决方案可能是利用 ZK 的一些其他作用域。例如,您可以将您的对象放在用户的Session范围内。请参阅我对带有菜单的 ZK 会话变量的回答,了解实现细节。请注意,使用 时Session,您不再局限于文本,而是可以存储实际的Object.

于 2013-11-13T10:46:14.427 回答