我正在尝试使用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");
}
答案 0 :(得分:0)
如评论所述,您的XHTML代码存在多个问题。
1)使用<h:form>
代替<form>
2)p:steps组件默认为只读。设置readonly="false"
以便具有交互式菜单项。在这种模式下,需要将其放置在h:form
内的某个位置,以便-我得到另外javax.faces.FacesException: MenuItem must be inside a form element
3)您的menuItem仅更新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>
在您的bean中:
public void shown2(){
showfield1 = false;
showfield2 = true;
}