2017-06-12 11 views
0

私は1つの選択肢を持つプライムフェイス内のテーブルを持っています。ユーザーがその表の項目を選択した後、フォーム全体を提出する必要があります。私は恥ずかしがるためにコマンドボタンを使用することができますが、私はユーザーがこれを行うことを望んでいない、選択がフォームの最後と最後のステップです。選択後にprimefacesテーブルを送信

<p:dataTable value="#{bean.selectedItems}" var="selItem" 
         selection="#{bean.selectedItem}" 
         rowKey="#{selItem.id}" 
         selectionMode="single" 
         id="selectedTbl"> 
       <p:ajax event="rowSelect" listener="#{bean.onSelectListener}"/> 
       <p:column selectionMode="single"/> 
       ... 
<p:dataTable/> 

AJAXリスナーなどのSelectedItemのsetメソッドが呼び出されますが、どのように私はアヤックスから提出トリガーのですか?


更新:より詳細な例

ケース:グループごとに一人だけが、有効にすることができます。ユーザは、テーブル内の多くの情報に基づいて決定する必要があります。そして時には、ユーザーはこれを非常に頻繁に行う必要があります。

<h:form> 
      <p:selectOneMenu value="#{bean.group}" valueChangeListener="#{bean.onGroupChange}"> 
       <f:selectItem itemLabel="Select..." noSelectionOption="true"/> 
       <f:selectItems value="#{bean.groups}"/> 
       <p:ajax update="selectedTbl"/> 
      </p:selectOneMenu> 

      <p:dataTable value="#{bean.selectedItems}" var="selItem" 
         selection="#{bean.selectedItem}" 
         rowKey="#{selItem.id}" 
         selectionMode="single" 
         id="selectedTbl"> 
       <p:ajax event="rowSelect" listener="#{bean.onSelectListener}"/> 
       <p:column selectionMode="single"/> 
       <p:column headerText="ID"> 
        <h:outputText value="selItem.id"/> 
       </p:column> 
       <p:column headerText="Name"> 
        <h:outputText value="selItem.name"/> 
       </p:column> 
       <!--Some more Information about the person, based on the the user makes a decision.--> 
       <p:dataTable/> 

       <!--only one User per Group can be enabled--> 
       <p:commandButton value="Enable" action="#{bean.enableSelected}" onclick="submit()"/> 
     </h:form> 

豆:

public void enableSelected(){ 
    manager.modifyPerson(selectItem); 
    selectedItems.clear(); 
    selectedItem = null; 
    group = null; 
} 
public void onSelectListener(SelectEvent event){ 
selectedItem = (Person) event.getObject(); 
} 

Beanは非常にシンプルにのみゲッターとセッターです。 onGroupChangeメソッドは、selectItemの新しい値をdbからロードします。

私はコマンドボタンを取り除き、機能をenableSelectedからonSelectListenerに移動したいと考えています。 db-FunctionをenableSelectedに移動すると、機能は動作しますが、ページはリフレッシュされません。

私はupdate = "@ form"をajaxに追加すると動作しませんので、submit()を使いたいと思います。

+0

フォームを送信するとどうなりますか?あなたは何かそんなことをしていますか? –

+0

送信後、フォームのすべてを保存し、フォームをリセットして、別のものを入力することができます – Ben

+0

リストをクリアしてテーブルをリフレッシュするだけです。すべてのフォームを泥沼化することを忘れないでください。 –

答えて

0

あなたのajaxにprocess = "@ form"を追加してみてください。

<p:ajax event="rowSelect" process="@form" listener="#{bean.onSelectListener}"/> 
関連する問題