0

私は次のコードを書きました、

        <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 から最新のデータを取得し (ファイルを抽出して、継続的に更新されます)、databean の List オブジェクトを埋めて、次のようにします。 selectManyCheckBox はそれをレンダリングできます。そのため、新しいデータを取得し、selectManyCheckBox で最新のオプションをレンダリングする必要があるように、commandExButton で動作を追加しました。しかし、これら 2 つの hx:behavior のうち、最初のものだけが機能しており、getter 関数を呼び出しています。

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

「get」の動作を削除すると、パネルダイアログは表示されますが、更新されたデータは表示されません。だから私は見つけることができません、私はここで何をしているのか正確に間違っています.誰か助けてくれますか?

4

1 に答える 1

0

まず、これが何のタグライブラリなのかわかりません。タグおよび/または質問で指摘する必要があります。

タグは 1 つだけ<hx:behavior>で、すべての作業が行われます。その場合、3 つのメソッドすべてを呼び出すメソッドが必要です。これらのタグを使用して、AJAX のような複数のコンポーネントを再レンダリングすることは可能targetAction="prefPanelGroup, preferenceSet"ですか?

私の知る限り、再レンダリングすると再レンダリングもpreferenceSet発生prefPanelGroupするため、個別に再レンダリングしても意味がありません。

また、再レンダリングは、 のようなより正確な ID をタグprefPanelGroupに伝えることによってのみ機能します。<hx:behavior>"PrefForm:prefPanelGroup"

これが役に立てば幸いです、ダニエル

于 2010-09-20T18:27:21.337 に答える