3

以下の 2 つのオートコンプリート フィールドがあります。コマンド ボタンを使用して、オートコンプリート値を交換します。スワップされた値を保持する必要があります。

    <p:column colspan="2" rendered="#{empty contactController.selectedContact}">
         <p:autoComplete id="contactName1" value="#{newContactRs.contact}"
                         completeMethod="#{contactRelationshipController.completeContacts}"
                         var="contact" itemLabel="#{contact.fullName}"
                         itemValue="#{contact}" converter="#{contactConverter}"
                         forceSelection="true" size="35" scrollHeight="200"
                         panelStyle="width:10px;">
              <p:ajax event="itemSelect" update="contactName1" />
          </p:autoComplete>
          <p:commandButton icon="ui-icon-arrow-2-e-w" id="flipButton" 
                           styleClass="ui-panel-titlebar-icon" oncomplete="swapInput()"              update="addNewContactRelationshipPanel" immediate="true"/>
          <smith:contactSelector value="#{newContactRs.contact}" update=":addContactRelationshipForm:addNewContactRelationshipPanel" triggerId="existingContactSelector1" resultList="#{contactRelationshipController.selectAllContact1}"/>
   </p:column>

   <p:column colspan="2">
        <p:autoComplete id="contactName2" value="#{newContactRs.relatedContact}"
                        completeMethod="#{contactRelationshipController.completeContacts}"
                        var="contact" itemLabel="#{contact.fullName}"
                        itemValue="#{contact}" converter="#{contactConverter}"
                        forceSelection="true" size="35" scrollHeight="200"
                        panelStyle="width:10px;">
             <p:ajax event="itemSelect" update="contactName2" />
         </p:autoComplete>
    <smith:contactSelector value="#{newContactRs.relatedContact}" update=":addContactRelationshipForm:addNewContactRelationshipPanel" triggerId="existingContactSelector2" resultList="#{contactRelationshipController.selectAllContact2}"/>
    </p:column>

ID「flipButton」のコマンドボタンをクリックすると、次の JavaScript が呼び出され、オートコンプリート フィールドの値が交換されます

function swapInput()
{
    var input_a =document.getElementById('addContactRelationshipForm:contactName1_input').value; 
    var input_b =document.getElementById('addContactRelationshipForm:contactName2_input').value;

    document.getElementById('addContactRelationshipForm:contactName1_input').value = input_b;
    document.getElementById('addContactRelationshipForm:contactName2_input').value = input_a;
}

値をスワップした後、スワップされた値を永続化しようとしていますが、スワップされた値ではなく元の値が永続化されています。バッキング Bean でスワップされた値を設定する必要がありますが、javascript または primefaces を使用してその方法がわかりません。

4

2 に答える 2

1

Preimefaces p:remoteCommand を使用してマネージド Bean メソッドを実行できます。 https://www.primefaces.org/showcase/ui/ajax/remoteCommand.xhtml

于 2013-09-12T03:52:12.900 に答える
0

commandButtonas を変更する

<p:commandButton icon="ui-icon-arrow-2-e-w" 
                 id="flipButton" 
                 styleClass="ui-panel-titlebar-icon" 
                 oncomplete="swapInput()" 
                 update="addNewContactRelationshipPanel" 
                 immediate="true" 
                 process="@this" 
                 actionListener="#{contactRelationshipController.setSwapInputFlag()}"/>

swapInputFlag次に、オートコンプリート フィールドを永続化しながらチェックします。

于 2013-09-12T19:33:12.827 に答える