JSF AJAX Запрос не работает с hx: panelDialog - PullRequest
0 голосов
/ 14 сентября 2010

Я написал следующий код,

        <h:form id="PrefForm" >
        <hx:commandExButton id="preferenceButton" type="button" style="align:right;" value="#{nls.preferenceLink }" title="#{nls.preferenceLinkTitle}" >
                    <hx:behavior event="onclick" behaviorAction="get" targetAction="prefPanelGroup"></hx:behavior>
                    <hx:behavior event="onclick" behaviorAction="show;stop" targetAction="preferenceSet"></hx:behavior>
        </hx:commandExButton>

        <hx:panelDialog id="preferenceSet"    type="modal" styleClass="panelDialog" title="#{nls.preferenceDialogTitle}" >
            <h:outputText styleClass="panelStartMessage" style="display:block;" value="#{nls.preferenceDialogWindowText}" />

            <h:panelGroup id="prefPanelGroup" rendered="#{neoReport.hasSelectItem }" style="display:block;width:300px;height:360px;overflow:auto;" >
                <hx:ajaxRefreshRequest id="refreshform" />
                <h:selectManyCheckbox value="#{neoReport.selectedItems}" layout="pageDirection">
                        <f:selectItems value="#{neoReport.selectItems}" />
                </h:selectManyCheckbox>
            </h:panelGroup> 

            <hx:panelBox id="noCommandWindow" rendered="#{!neoReport.hasSelectItem }" style="display:block;width:300px;height:50px;" layout="lineDirection"> 
                <h:outputText styleClass="outputText" id="cmdInfo"    value="#{nls.noCommands}" />
            </hx:panelBox>

            <h:panelGroup id="buttonBox1" styleClass="panelStartBox" >
                    <hx:commandExButton id="submitPref"    styleClass="commandExButton" type="submit" value="#{nls.submit}" action="#{neoReport.action}">
                        <hx:behavior event="onclick" behaviorAction="hide"    targetAction="preferenceSet" id="behaviorSubmitPref" />
                    </hx:commandExButton>
                    <hx:commandExButton id="CancelPref"    styleClass="commandExButton" type="submit" value="#{nls.cancel}" action="neoReport">
                        <hx:behavior event="onclick" behaviorAction="hide"    targetAction="preferenceSet" id="behaviorCancelPref" />
                    </hx:commandExButton>
            </h:panelGroup>
         </hx:panelDialog>
    </h:form>

Основная идея этого кода состоит в том, чтобы иметь кнопку на странице, когда пользователь щелкает, он должен получить последние данные из bean-компонента (путем извлечения файла, который постоянно обновляется) и заполнить объект List в databean, так что что h: selectManyCheckBox может сделать это. Поэтому я добавил поведение с помощью командыExButton, чтобы он получал новые данные и отображал последние параметры в selectManyCheckBox. НО из этих двух hx: поведения работает только первый, вызывая функцию-получатель

<f:selectItems value="#{neoReport.selectItems}"

, но это не рендеринг panelDialog в дальнейшем. Если я уберу поведение "get", будет показано диалоговое окно панели, но не с обновленными данными. Поэтому я не могу выяснить, что именно я здесь делаю. Может ли кто-нибудь помочь?

1 Ответ

0 голосов
/ 20 сентября 2010

Прежде всего, я не знаю, что это за библиотека тегов.Вы должны указать это в тегах и / или в вопросе.

У вас должен быть только один тег <hx:behavior>, который сделает всю работу за вас.В этом случае у вас должен быть метод, который вызывает все три метода.Можно ли с этими тегами перерисовывать несколько компонентов с помощью AJAX - например, targetAction="prefPanelGroup, preferenceSet"?

Насколько я знаю, перерисовка preferenceSet также приведет к перерисовке prefPanelGroup, поэтому бессмысленно перерисовывать отдельно.

Кроме того, перерисовка prefPanelGroup будет работать только при указании тегу <hx:behavior> более точного идентификатора, например "PrefForm:prefPanelGroup".

Надеюсь, это поможет, Даниэль

...