2012-08-23 2 views
0

J'ai un <p:inputText value="#{beans.text}" /> et un <p:commandButton actionlistener="#{beans.method}" />. Comment puis-je exécuter actinoListener-Method à partir de Button en tapant 'enter' dans inputText ??Entrer un événement sur InputText pour l'écouteur CommandButton

Merci pour les réponses

somthing a mal tourné. Voici le code-snippet->

<h:panelGrid columns="2"> 
<p:commandButton actionListener="#{hoursView.saveOrUpdateHour}" /> 
<p:commandButton actionListener="#{hoursView.onFilterChange()}" oncomplete="dlgHoursFilter.show()" immediate="true" update=":hoursFilter" /> 
</h:panelGrid> 
</h:panelGrid> 
<h:panelGrid columns="4" class="buttonContent" id="buttonView"> 
<p:commandButton ajax="false" actionListener="#{hoursView.showDay()}" immediate="true" update="hoursList" /> 
<p:commandButton ajax="false" actionListener="#{hoursView.showWeek()}" immediate="true" update="hoursList" /> 
<p:commandButton ajax="false" actionListener="#{hoursView.showMonth()}" immediate="true" update="hoursList" /> 
<p:commandButton ajax="false" actionListener="#{hoursView.showAll()}" immediate="true" update="hoursList" /> 
</h:panelGrid> 
     <h:panelGrid columns="3" id="tableGrid"> 
      <p:dataTable id="hoursList" value="#{hoursView.listHours}" 
       var="hours" widgetVar="hoursTable" resizableColumns="true" 
       emptyMessage="#{msg.noData}" rowKey="#{hours.id}" 
       selection="#{hoursView.selected}" selectionMode="single"> 

       <p:ajax event="rowDblselect" update=":hourEditDialog" 
        listener="#{hoursView.onHourSelect}" 
        oncomplete="dlgHourEdit.show()" /> 

       <f:facet name="header"> 
        <h:panelGrid columns="3" class="buttonContent" id="regexContent"> 
         <h:outputText value="#{msg.regexHour}" /> 
         <p:inputText value="#{hoursView.regex}" id="regex"> 
         </p:inputText> 
         <p:commandButton icon="addButton" id="regexSave" 
          process="regexContent" actionListener="#{hoursView.regexSave}" 
          update=":editContent:hoursList,:editContent:growl,regex"> 
          <p:defaultCommand target="regexSave" scope="regexContent" /> 
         </p:commandButton> 
         <p:tooltip for="regexSave" value="#{msg.regexSave}" 
          showEffect="fade" hideEffect="fade" /> 
        </h:panelGrid> 
       </f:facet> 

Si je feu « enter' événement le regexSave-Méthode sera acquittée. Mais la méthode pour saveOrUpdateHour aussi ....


somthing a mal tourné. Voici le code-snippet->

<h:panelGrid columns="2"> 
<p:commandButton actionListener="#{hoursView.saveOrUpdateHour}" /> 
<p:commandButton actionListener="#{hoursView.onFilterChange()}" oncomplete="dlgHoursFilter.show()" immediate="true" update=":hoursFilter" /> 
</h:panelGrid> 
</h:panelGrid> 
<h:panelGrid columns="4" class="buttonContent" id="buttonView"> 
<p:commandButton ajax="false" actionListener="#{hoursView.showDay()}" immediate="true" update="hoursList" /> 
<p:commandButton ajax="false" actionListener="#{hoursView.showWeek()}" immediate="true" update="hoursList" /> 
<p:commandButton ajax="false" actionListener="#{hoursView.showMonth()}" immediate="true" update="hoursList" /> 
<p:commandButton ajax="false" actionListener="#{hoursView.showAll()}" immediate="true" update="hoursList" /> 
</h:panelGrid> 
<h:panelGrid columns="3"> 
<h:outputText value="#{msg.regexHour}" /> 
<p:inputText value="#{hoursView.regex}" id="regex"> 
<p:ajax event="change" update="hoursList, growl" listener="#{hoursView.regexSave}" /> 
</p:inputText> 
<p:commandButton actionListener="#{hoursView.regexSave}" update="hoursList, growl" /> 
</h:panelGrid> 

Si je feu « enter' événement le regexSave-Méthode sera acquittée. Mais la méthode pour saveOrUpdateHour, aussi ....

En attendant, j'ai configuré mon code un peu. Maintenant, le champ de texte et le bouton sont dans l'en-tête de ma table.

<h:panelGrid columns="3" id="tableGrid"> 
      <p:dataTable id="hoursList" value="#{hoursView.listHours}" 
       var="hours" widgetVar="hoursTable" resizableColumns="true" 
       emptyMessage="#{msg.noData}" rowKey="#{hours.id}" 
       selection="#{hoursView.selected}" selectionMode="single"> 

       <p:ajax event="rowDblselect" update=":hourEditDialog" 
        listener="#{hoursView.onHourSelect}" 
        oncomplete="dlgHourEdit.show()" /> 

       <f:facet name="header"> 
        <h:panelGrid columns="3" class="buttonContent" id="regexContent"> 
         <h:outputText value="#{msg.regexHour}" /> 
         <p:inputText value="#{hoursView.regex}" id="regex"> 
         </p:inputText> 
         <p:commandButton icon="addButton" id="regexSave" 
          process="regexContent" actionListener="#{hoursView.regexSave}" 
          update=":editContent:hoursList,:editContent:growl,regex"> 
          <p:defaultCommand target="regexSave" scope="regexContent" /> 
         </p:commandButton> 
         <p:tooltip for="regexSave" value="#{msg.regexSave}" 
          showEffect="fade" hideEffect="fade" /> 
        </h:panelGrid> 
       </f:facet> .... 
+0

il y a quelques mots manquants dans la question .. Je suppose que vous vouliez vous dire que vous avez un inputText et un bouton de commande – Damian

+0

le texte d'entrée est dans la même forme que le bouton de commande? il n'y a qu'un seul bouton de commande? pourquoi ne pas inclure un extrait de votre xhtml pour clarifier cela? – Damian

+0

En attendant j'ai configuré mon code un peu. Maintenant, le champ de texte et le bouton sont dans l'en-tête de ma table. – Sandy

Répondre

3

Vous pouvez utiliser onkeypress du p:inputText et avec l'aide de l'appel jquery la .click() sur votre bouton, notez que return false; fera en sorte que rien (p:ajax for example) sera appelé après l'admission sera pressé

comme ceci:

<p:commandButton id="myButtonID" actionlistener="#{beans.method}" /> 


<p:inputText value="#{beans.text}" onkeypress="if (event.keyCode == 13) { jQuery('#myButtonID').click(); return false;}"/> 

Mise à jour au lieu de :editContent:hoursList essayer update="tableGrid" (reportez-vous à l'emballage de table) ou si vous utilisez primefaces 3.4 essayer update="hoursList"

+0

Je l'ai testé. Et cela ne fonctionne que si je supprime le ": editContent: hoursList" dans la mise à jour de commandButton ... Par Si je supprime ma table ne rafraîchira pas avec les nouvelles données ... – Sandy

+0

Quelle table? Vous devriez mettre à jour votre code dans la question alors ... ne voyez pas ': editContent: hoursList' d'où vous mettez à jour la table? – Daniel

+0

J'ai udate le code en question, premier message – Sandy

Questions connexes