2

是否可以在中以编程方式设置当前显示的选项卡<p:wizard>

例如,我希望对于包含向导的同一页面的两个不同请求,选择不同的选项卡。

我目前正在尝试做的是有一个带有许多选项卡的向导,在第二个选项卡中我有一个重定向到另一个页面,所以当我回来时,我想进入导致重定向的最后一步。

你能帮我么 ?十分感谢 !

4

2 回答 2

6

根据primefaces 文档,标签有一个step属性p:wizard,它指定了您当前所在的向导的步骤。

属性:步骤
默认值: 0
类型:字符串
描述:流程中当前步骤的 ID

您必须将此属性绑定到支持 bean 的值,并在重定向和返回期间对其进行维护。如果您的向导的 bean 是@ViewScoped您将在重定向步骤期间丢失该信息,因此您必须使用view paramflash scope传递它。

于 2013-02-23T13:53:00.747 回答
5

我的回答很可能无法满足您的全部要求,但是,尽管如此,它可能会为您指明问题的解决方案。

据我所知,PrimeFaces Wizard UIComponent 是为一页的工作流而设计。这实际上意味着输入将由视图范围内的支持 bean 处理。

这样,在某个步骤上进行重定向将清除所有数据输入,因为您的视图更改并且旧视图被破坏。

无论如何,设置当前标签显示的一种方法是向导组件的步骤属性。所以,

<p:wizard step="#{wizardBean.currentStep}" >...</p:wizard>

将强制向导显示您在 bean 中指定的步骤。您可以通过使用例如视图参数来获取它,例如

<f:viewParam name="step" value="#{wizardBean.currentStep}" />

但是,如果 bean 的生命周期比视图的生命周期更多,例如,bean 可以放在会话范围内,那将是有意义的。

也就是说,也许事先登录是一个更好的主意。或者,如果绝对有必要在向导的第 2 步中执行此操作,请在页面本身或流行窗口中提供内置登录功能?

Also, programmatically the setting you speak of can be achieved via a binding of component to your backing bean and setting the step value in the backing bean, for example, in a preRenderView event.

于 2013-02-23T14:08:22.567 回答