是否可以在中以编程方式设置当前显示的选项卡<p:wizard>
?
例如,我希望对于包含向导的同一页面的两个不同请求,选择不同的选项卡。
我目前正在尝试做的是有一个带有许多选项卡的向导,在第二个选项卡中我有一个重定向到另一个页面,所以当我回来时,我想进入导致重定向的最后一步。
你能帮我么 ?十分感谢 !
是否可以在中以编程方式设置当前显示的选项卡<p:wizard>
?
例如,我希望对于包含向导的同一页面的两个不同请求,选择不同的选项卡。
我目前正在尝试做的是有一个带有许多选项卡的向导,在第二个选项卡中我有一个重定向到另一个页面,所以当我回来时,我想进入导致重定向的最后一步。
你能帮我么 ?十分感谢 !
根据primefaces 文档,标签有一个step
属性p:wizard
,它指定了您当前所在的向导的步骤。
属性:步骤
默认值: 0
类型:字符串
描述:流程中当前步骤的 ID
您必须将此属性绑定到支持 bean 的值,并在重定向和返回期间对其进行维护。如果您的向导的 bean 是@ViewScoped
您将在重定向步骤期间丢失该信息,因此您必须使用view param或flash scope传递它。
我的回答很可能无法满足您的全部要求,但是,尽管如此,它可能会为您指明问题的解决方案。
据我所知,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.