我正在尝试将对象从一个zul页面传递到另一个zul页面。其中:
我已经尝试过executions.sendredirect(),但是它清除了object的值,forward()抛出一个异常,说“使用sendRedirect代替处理用户请求”。
答案 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
。