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



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

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

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

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

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

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

您必须将此属性绑定到支持bean的值,并在重定向和返回期间维护它。如果您的向导的bean是@ViewScoped,您将在重定向步骤中丢失该信息,所以您必须使用视图参数或flash作用域来传递它。

我的答案很可能无法满足您的全部需求,但它可能会为您指明问题的解决方案。

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

通过这种方式,在某个步骤上进行重定向将清除所有数据输入,因为您的视图发生了更改,旧的视图被破坏。

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

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

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

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

但是,如果您的bean的生存期比视图的生存期更长,那么这是有意义的,例如,可以将bean放在会话范围中。

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

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

相关内容

  • 没有找到相关文章

最新更新