4

p:orderListボタンをクリックするとポップアップに表示されるprimefacesがあります。オーダーリストでアイテムの順序を変更し、ポップアップの [順序を保存] ボタンをクリックすると、順序が変更されたリストが表示されません。PFB 私のコード -

<p:commandButton ajax="true" id="toolOrderButton" value="Tool Order" onclick="toolOrderPopup.show()" type="button"/>
<p:dialog header="Tool Order" severity="alert" widgetVar="toolOrderPopup"
                        appendToBody="true">  
    <p:orderList id="toolOrderList" controlsLocation="right" value="#{toolBean.toolOrderList}" var="tool" itemLabel="#{tool}" itemValue="#{tool}" iconOnly="true"/>
    <p:commandButton ajax="true"  value="Save Order" process="@this" type="submit" actionListener="#{toolBean.setToolOrder}" oncomplete="toolOrderPopup.hide()"/>
    <p:commandButton value="Cancel" onclick="toolOrderPopup.hide()" type="button"/>   
</p:dialog>

ビーンで:

public void setToolOrder(){ 
    System.out.println("toolOrderList-" + BeanStringConverter.convertToString(toolOrderList));
}

コードの何が問題なのか教えてください。

4

1 に答える 1

6

モデルを保存p:orderlistするには、 を処理する必要があります。orderList

<p:commandButton ajax="true" value="Save Order" 
                 process="@this toolOrderList"
                 actionListener="#{toolBean.setToolOrder}"
                 oncomplete="toolOrderPopup.hide()"/>

あなたの質問とは無関係に、おそらく次のようなものがあります:

<h:form>
    ...
    <p:commandButton ajax="true" id="toolOrderButton" value="Tool Order" onclick="toolOrderPopup.show()" type="button"/>
    ...
    <p:dialog header="Tool Order" severity="alert" widgetVar="toolOrderPopup"
                    appendToBody="true">  
        <p:orderList id="toolOrderList" controlsLocation="right" value="#{toolBean.toolOrderList}" var="tool" itemLabel="#{tool}" itemValue="#{tool}" iconOnly="true"/>
        <p:commandButton ajax="true" value="Save Order" 
                         process="@this" 
                         actionListener="#{toolBean.setToolOrder}" 
                         oncomplete="toolOrderPopup.hide()"/>
        <p:commandButton value="Cancel" 
                         onclick="toolOrderPopup.hide()" type="button"/>   
    </p:dialog>
</h:form>

もしそうなら、primefaces docが何を言っているのか見てくださいappentToBody

ページ定義と html DOM が異なるため、appendToBody は注意して使用してください。たとえば、ダイアログが h:form コンポーネント内にあり、appendToBody が有効になっている場合、ブラウザーではダイアログがフォームの外側になり、予期しない結果が生じる可能性があります。この場合、フォームをダイアログ内にネストします。

別の構造は次のようになります。

    <h:form id="first">
        ...
        <p:commandButton ajax="true" id="toolOrderButton" value="Tool Order" onclick="toolOrderPopup.show()" type="button"/>
        ...
    </h:form>
    <p:dialog header="Tool Order" severity="alert" widgetVar="toolOrderPopup"
                    appendToBody="true">
        <h:form id="second">
            <p:orderList id="toolOrderList" controlsLocation="right" value="#{toolBean.toolOrderList}" var="tool" itemLabel="#{tool}" itemValue="#{tool}" iconOnly="true"/>
            <p:commandButton ajax="true"  value="Save Order"
                             process="@this toolOrderList" 
                             actionListener="#{toolBean.setToolOrder}" oncomplete="toolOrderPopup.hide()"/>
            <p:commandButton value="Cancel" onclick="toolOrderPopup.hide()" type="button"/>
        </h:form> 
    </p:dialog>
</h:form>
于 2012-10-23T11:06:34.957 に答える