我正在尝试使用STEPS组件-Primefaces。但在文档中,教程非常糟糕。
有人能写一个使用具有属性渲染的步骤的例子吗?或者类似的东西,我如何使用steps组件显示和隐藏面板。
我试过这样做,但不起作用
我的xhtml
<p:steps id="testSteps">
<p:menuitem value="Personal" update="testSteps" actionListener="#{BeanTest.shown2()}"/>
<p:menuitem value="Seat Selection" update="testSteps"/>
</p:steps>
<form id="formShowField1" >
<p:panel rendered="#{BeanTest.showfield1}">
<p:outputLabel value="FORM 1"/>
</p:panel>
</form>
<form id="formShowField2">
<p:panel rendered="#{BeanTest.showfield2}">
<p:outputLabel value="FORM 2" />
</p:panel>
</form>
我的豆
public void shown1(){
showfield1 = true;
updateEntirePage("formShowField1");
}
public void shown2(){
showfield1 = false;
updateEntirePage("formShowField1");
showfield2 = true;
updateEntirePage("formShowField2");
}
如注释所述,XHTML代码存在多个问题。
1( 使用<h:form>
而不是<form>
2( 默认情况下,p:steps组件是只读的。设置readonly="false"
以便具有交互式菜单项。在这种模式下,它需要被放置在h:form
内部的某个位置,以-我得到一个javax.faces.FacesException: MenuItem must be inside a form element
。
3( 您的菜单项仅更新p:steps
组件。你的其他面板永远不会以这种方式显示,因为它们没有更新。您也应该更新包含它们的元素。但不知道updateEntirePage
是什么,尤其是当调用两次时。
4( 像Java变量这样的Bean名称通常以小写字符开头。
这样试试:
<h:form>
<p:steps id="testSteps" readonly="false">
<p:menuitem value="Personal" update="@form" actionListener="#{beanTest.shown2()}"/>
<p:menuitem value="Seat Selection" update="@form"/>
</p:steps>
<p:panel rendered="#{neanTest.showfield1}">
<p:outputLabel value="FORM 1"/>
</p:panel>
<p:panel rendered="#{beanTest.showfield2}">
<p:outputLabel value="FORM 2" />
</p:panel>
</h:form>
在你的豆子里:
public void shown2(){
showfield1 = false;
showfield2 = true;
}