在p:向导中以编程方式设置当前显示的选项卡

时间:2013-02-23 11:16:51

标签: jsf jsf-2 primefaces

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

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

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

你能帮帮我吗?非常感谢你!

2 个答案:

答案 0 :(得分:6)

根据primefaces documentation step 标记有p:wizard属性,用于指定您当前所在向导的步骤。

  

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

您必须将此属性绑定到辅助bean的值,并在重定向期间维护它并返回。如果向导的bean为@ViewScoped,您将在重定向步骤中丢失该信息,因此您必须使用view paramflash scope传递该信息。

答案 1 :(得分:4)

我的答案很可能无法满足您的完整要求,但是,它可能会指向您解决问题。

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

这样,对某个步骤进行重定向将清除所有数据输入,因为您的视图会发生变化而旧的视图会被破坏。

无论如何,设置当前选项卡以显示的方法是Wizard组件的step属性。所以,

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

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

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

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

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

此外,以编程方式设置您所说的设置可以通过将组件绑定到您的支持bean并在辅助bean中设置步骤值来实现,例如,在preRenderView事件中。