p:步骤示例不起作用

时间:2018-12-03 17:03:09

标签: jsf primefaces

我正在尝试使用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");        
}

1 个答案:

答案 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;
}