Как скрыть ах: panelGrid

1

У меня есть <p:selectOneRadio> с двумя <f:selectItem> и у меня есть два <h:panelGrid>. Я хочу скрыть один из <h:panelGrid> зависимости от выбранного <f:selectItem>.

<p:selectOneRadio>
    <f:selectItem itemLabel="Hide pnl1" itemValue="1" />
    <f:selectItem itemLabel="Hide pnl2" itemValue="2" />
</p:selectOneRadio>

<h:panelGrid id="pnl1">
    //More stuff here...
</h:panelGrid>

<h:panelGrid id="pnl2">
    //More stuff here...
</h:panelGrid>

В этом примере, как я могу скрыть pnl1, если опция 1 выбрана в радио?

Как я могу скрыть pnl2, если опция 2 выбрана в радио?

Пожалуйста, покажите мне код Bean.

Необходимо показать только один pnl

Теги:
jsf
primefaces
hide

1 ответ

4
Лучший ответ

Вы можете сделать это через ajax.

<h:form id="frmPanels">
    <p:selectOneRadio id="sorPanelShow" binding="#{sorPanelShow}">
        <f:selectItem itemLabel="Hide pnl1" itemValue="1" />
        <f:selectItem itemLabel="Hide pnl2" itemValue="2" />
        <p:ajax update="pnlContainer" />
    </p:selectOneRadio>

    <h:panelGroup id="pnlContainer" layout="block">
        <h:panelGrid id="pnl1" rendered="#{sorPanelShow.value eq '2'}">
            //More stuff here...
        </h:panelGrid>

        <h:panelGrid id="pnl2" rendered="#{sorPanelShow.value eq '1'}">
            //More stuff here...
        </h:panelGrid>
    </h:panelGroup>
</h:form>

Обратите внимание, что вам нужно использовать <h:panelGroup> чтобы обернуть <h:panelGrid> для повторной визуализации. Это связано с тем, что каждый неориентированный UIComponent (rendered="false") не будет частью древовидного компонента, хранящегося в представлении, и не сможет быть обновлен с помощью операций ajax. Таким образом, вместо того, чтобы отображать каждый <h:panelGrid> самостоятельно, лучше обновить оболочку UIComponent. Кроме того, <h:panelGroup layout="block"> будет использовать <div> при создании HTML.

Связанная информация:

  • 0
    Эй, это было здорово! но мне нужно оценивать разные, не равные в отрендеренном варианте, как это сделать?
  • 0
    Атрибут, rendered @KazMiller, должен иметь значение false , чтобы не показывать компонент. Итак, просто предоставьте поле из вашего управляемого компонента, которое имеет boolean значение, и установите его значение в методе, вызываемом событием <p:ajax> .
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню