2017-06-12 2 views
0

J'ai une table dans Primefaces avec une seule sélection. Après que l'utilisateur sélectionne une entrée de cette table, le formulaire entier doit être soumis. Je pourrais utiliser un bouton de commande pour le sumbit, mais je ne veux pas que l'utilisateur le fasse, parce que la sélection est la dernière et dernière étape du formulaire.Soumettre la table des primefaces après sélection

<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/> 

L'auditeur ajax ainsi que la méthode de jeu de l'selectedItem est appelé, mais comment puis-je déclencher une de soumettre ajax?


Mise à jour: exemple plus détaillé

Case: Une seule personne par groupe peut être activé. L'utilisateur doit décider en fonction de nombreuses informations dans un tableau. Et parfois, l'utilisateur doit le faire très souvent.

<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> 

haricot:

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

Le haricot est assez simple et ne getter setter. La méthode onGroupChange charge les nouvelles valeurs de selectItems à partir de la base de données. Je veux me débarrasser du bouton de commande et déplacer la fonctionnalité de enableSelected à onSelectListener. Lorsque je déplace la fonction db pour activerSelected cela fonctionne mais la page n'est pas actualisée. Lorsque j'ajoute update = "@ form" à ajax, cela ne fonctionne pas, donc je voulais utiliser submit().

+0

persistez-vous ou quelque chose comme ça?!? –

+0

après le soumettre, tout dans le formulaire doit être enregistré et le formulaire doit être réinitialisé, de sorte que l'utilisateur peut en entrer un autre – Ben

+0

Rafraîchissez simplement la table en effaçant la liste?!? et n'oubliez pas de mettre à jour tous les formulaires –

Répondre

0

Essayez d'ajouter process = "@ form" dans votre ajax. Que va-t-il se passer lorsque vous soumettez le formulaire?!?

<p:ajax event="rowSelect" process="@form" listener="#{bean.onSelectListener}"/>