Условно представленная кнопка, дизайн, вызов действия - PullRequest
2 голосов
/ 24 августа 2011

JFS1.2 + Richfaces 3.3

Ситуация следующая:

Страница JSP условно отображает ту или иную панель группы.

Внутри каждой группы панелей есть пара установщиков и одна командная кнопка. Каждая из двух групп панелей использует свой компонент для настройки и выполнения действий.

В верхней части страницы есть selectOneRadio с (очевидными) двумя пунктами - базовые опции буксировки условного рендеринга.

Страница отображается правильно, переключатель вызывает отображение соответствующей панели. Дело в том, что кнопки команд не вызывают действие.

Я знаю, что происходит - когда я нажимаю кнопку, чтобы вызвать действие, dom восстанавливается, но значение, которое удерживает мое решение отобразить конкретную панель, больше не существует. Кнопка не воссоздана, действие не запущено.

Технически:

<h:selectOneRadio value="#{reportType}">
                <f:selectItem itemLabel="x" itemValue="x"/>
                <f:selectItem itemLabel="y" itemValue="y"/>
                <a4j:support event="onclick" reRender="xPanel, yPanel/>
</h:selectOneRadio>

<h:panelGrid id="xPanel "columns="2" rendered="#{reportType eq 'x'}">
    <...some setters>
    <... commandbutton>
</h:panelGrid>

<h:panelGrid id="yPanel "columns="2" rendered="#{reportType eq 'y'}">
    <...some setters>
    <... commandbutton>
</h:panelGrid>

Вопрос в том, как оформить страницу для получения правильного рендеринга и действий? На данный момент я создал дополнительный сессионный компонент, который содержит значение переключения (x | y), но для меня это плохо пахнет ...

1 Ответ

1 голос
/ 03 сентября 2011

RichFaces 3.3 предлагает тег <a4j:keepAlive>, который в основном совпадает с тегами Томагавка <t:saveState> и JSF2 @ViewScoped. Добавьте следующую строку где-то на ваш взгляд:

<a4j:keepAlive beanName="#{bean}" />

Это будет поддерживать бин, пока вы возвращаете null или void из методов действия (слушателя).

Смотри также:

...