richfaces a4j: событие поддержки неожиданный вызов внутренних методов

Я работаю над приложением JSF 1.2 с Richfaces 3.3. У меня есть всплывающее окно, которое содержит rich:extendedDataTable, Когда я щелкаю строку в таблице, я хочу включить или отключить кнопку, и я использую a4j:support event="onRowClick",

Вот некоторый код:

<h:form>
    <rich:panel id="main">
        <a4j:commandButton id="completed" value="Completed" 
        rendered="#{bean.completedCase}" />

        <a4j:commandButton  value="Open"
                oncomplete="#{rich:component('popupId')}.show(...)">
        </a4j:commandButton>

        <rich:modalPanel id="popupId">
            <a4j:region>

                <rich:extendedDataTable id="source" value="#{bean.sourceItems}" 
                    var="sourceItem" selectionMode="single" >
                    <a4j:support event="onRowClick" eventsQueue="pickQueue" reRender="copy" >
                        <f:setPropertyActionListener value="#{sourceItem}"
                            target="#{bean.sourceSelection}" />
                    </a4j:support>
                    ....
                </rich:extendedDataTable>           

                <a4j:commandButton id="copy" value="Copy" />
            </a4j:region>

            <a4j:commandButton value="Ok" reRender="completed"
                    oncomplete="#{rich:component('popupId')}.hide();return false;">
            </a4j:commandButton>

        </rich:modalPanel>
    </rich:panel>
</h:form>

Проблема в том, что когда я щелкаю строку, в бэкэнде вызываются некоторые методы, используемые для рендеринга кнопки: rendered="#{bean.completedCase}", но кнопка находится не во всплывающем окне, а на странице за всплывающим окном. Любая идея, почему называются другие методы, чем те, которые используются для таблицы?

2 ответа

Не рекомендуется иметь вложенные <h:form>с, но мы можем иметь несколько <h:form>s, попробуйте изменить свой код таким образом, чтобы <h:commandButton> в одном h:form и <h:modalPanel> в другой форме

Надеюсь это поможет. Вы также можете попробовать с <a4j:form> за modalPanel

Попробуйте использовать ajaxsingle="true" на ваше a4j:support тег. Так как вы используете h:form когда onrowclick запускает запрос, все компоненты внутри формы h: будут обрабатываться на сервере на этапе обновления модели.

Надеюсь это поможет.

Другие вопросы по тегам