1

次のようなチェックボックスを使用して、値フォームjsfページをoverlayPanelからBeanに送信したいと思います。 ここに画像の説明を入力

オーバーレイ パネルと ajax 送信を表示するには、次のコードを使用します。デバッガーで問題ないことを確認します。

<p:commandButton id="joinBtn" value="Basic" type="button" disabled="#{dataPropertyCurrent.notJoinable}"/>
<p:overlayPanel id="joinPanel" for="joinBtn" appendToBody="true" dynamic="false">
    <f:facet name="header">Details</f:facet>
    <p:dataList value="#{treeBean.getDataPropsCouldBeJoinedWith(dataPropertyCurrent)}" type="definition" var="dataJoinVal">
        <h:panelGrid columns="2" cellpadding="10">
            <h:column>
                <p:selectBooleanCheckbox value="#{dataJoinVal.checked}" id="cbID">
                    <p:ajax event="change" update="cbID" partialSubmit="true"/>
                </p:selectBooleanCheckbox>
            </h:column>
            <h:column>
                <h:outputText value="#{dataJoinVal.caption}" />
            </h:column>
        </h:panelGrid>
    </p:dataList>
    <!--<p:commandButton  value="Apply" id="btnApplyJoin" type="button" process="@parent" />-->
    <h:outputLabel value="ID: #{dataPropertyCurrent.joinDataPropertyId}" />
</p:overlayPanel>

しかし、その後、overlayPanel が非表示になり、フォーム送信ボタンが次のコードで押されたとき:

<p:commandButton value="Apply join" update="joinAccordionPanel,dsAccordionPanelMain" actionListener="#{treeBean.applyJoinOptions}" />
  • ビーンブール値に「false」を再度設定します。

では、overlayPanel 値を適切に Bean に送信する方法は?

PrimeFaces バージョン: 3.5

4

1 に答える 1

1

ここで説明を見つけました: http://forum.primefaces.org/viewtopic.php?f=3&t=30550#p97737 :

「appendToBody を使用している場合は、すべての入力フィールドとボタンをラップする overlayPanel コンポーネント内にフォームを配置することを強くお勧めします。これは、最後のソリューションで行ったことです。ただし、これは、overlayPanel を内部に配置できないことを意味します。フォームの入れ子に制限があるため、xhtml ページ内の別のフォーム。通常、最善の解決策は、appendToBody が絶対に必要でない場合は避けることです。"

編集

<h:form>overlayPanel 内に追加したところ、正常に動作するようになりました。

<p:overlayPanel id="joinPanel" for="joinBtn" appendToBody="true" dynamic="true" >
    <h:form id="formTmp">
    <f:facet name="header">Details</f:facet>
    <p:dataList value="#{treeBean.getDataPropsCouldBeJoinedWith(dataPropertyCurrent)}" type="definition" var="dataJoinVal">
        <h:panelGrid columns="2" cellpadding="10">
            <h:column>
                <p:selectBooleanCheckbox value="#{dataJoinVal.checked}" id="cbID">
                    <p:ajax event="change" update="cbID" partialSubmit="true"/>
                </p:selectBooleanCheckbox>
            </h:column>
            <h:column>
                <h:outputText value="#{dataJoinVal.caption}" />
            </h:column>
        </h:panelGrid>
    </p:dataList>
    </h:form>
</p:overlayPanel>
于 2013-06-02T22:49:09.810 に答える