p: пример шагов не работает - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь использовать компонент STEPS - Primefaces.Но в документации учебник очень плохой.

Может ли кто-нибудь написать пример, используя шаги с отображаемым свойством или что-то в этом роде, как я могу показать и скрыть панель, используя компонент STEPS.

Iпопробовал вот так, но не работает

Мой 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 голосов
/ 04 декабря 2018

Как отмечается в комментариях, в коде XHTML есть несколько проблем.

1) Используйте <h:form> вместо <form>

2) Компонент p: steps только для чтениядефолт.Установите readonly="false", чтобы иметь элементы интерактивного меню.В этом режиме его нужно поместить где-то внутри h:form до - я получаю javax.faces.FacesException: MenuItem must be inside a form element else.

3) Ваши элементы menu обновляют только компонент p:steps.Ваши другие панели никогда не будут отображаться таким образом, поскольку они не обновляются.Вы должны обновить элемент, содержащий их тоже.Не знаю, что такое updateEntirePage, особенно когда вызывается дважды.

4) Имена бинов, такие как переменные Java, обычно начинаются с символа нижнего регистра.

Попробуйте это так:

<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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...