是否可以在<p:wizard>
中以编程方式设置当前显示的标签?
例如,我想要对包含向导的同一页面的两个不同请求,以选择不同的选项卡。
我目前正在尝试做的是,有一个带有许多选项卡的向导,在第二个选项卡中我有一个重定向到另一个页面,所以当我回来时,我想进入导致重定向的最后一步。
你能帮帮我吗?非常感谢你!答案 0 :(得分:6)
根据primefaces documentation, step
标记有p:wizard
属性,用于指定您当前所在向导的步骤。
属性:步骤
默认值: 0
类型:字符串
说明:流程中当前步骤的ID
您必须将此属性绑定到辅助bean的值,并在重定向期间维护它并返回。如果向导的bean为@ViewScoped
,您将在重定向步骤中丢失该信息,因此您必须使用view param或flash 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事件中。