2013-07-22 5 views
0

J'ai un autre problème JSF étrange ici ... Je ne sais pas vraiment pourquoi, mais quoi que j'essaie de faire, j'ai un problème sur deux. Soit la méthode d'action dans mon popupPanel n'est pas (signifie jamais) appelée ou elle est appelée, mais la valeur de ma selectBox est (toujours) nulle. Ne peut pas comprendre, quel est le problème, mais il me semble, comme c'est un problème de propriété XHTML.Action JSF non appelée OU valeur selectbox est nulle

Déjà essayé de mettre le popupPanel en dehors de mon formulaire h: (m'a aidé à d'autres endroits ...), j'ai aussi essayé de le mettre à l'extérieur et de mettre un autre formulaire dans mon popup. Au-delà de ça j'essayais de changer la pièce jointe au parent/form et j'ai changé l'exécution du commandButton dans mon popup pour former/form-id/popuppanel-id et je suppose qu'il y avait plus de choses que j'ai faites ... mais rien n'a aidé . Le Bean est la portée de la session et j'utilise Richface 4.0 Final si c'est vraiment important.

Qu'est-ce jamais, le XHTML ressemble à ceci:

<rich:popupPanel 
    header="#{label['edit.title']} #{mandateAction.ccService.mandateList[mandateAction.currentIndex].id}" 
    id="addExternalSystem" 
    onmaskclick="#{rich:component('addExternalSystem')}.hide()" 
    domElementAttachment="form" autosized="true" layout="block"> 
    <h:panelGrid columns="2"> 
     <h:outputText value="#{label['login.username']}" /> 
     <h:inputText 
     value="#{mandateAction.newExternalSystem.username}" /> 

     <h:outputText value="#{label['login.password']}" /> 
     <h:inputSecret 
     value="#{mandateAction.newExternalSystem.password}" /> 

     <h:outputText value="#{label['mandate.externalSystem']}" /> 
     <h:selectOneMenu 
     value="#{mandateAction.newExternalSystem.externalSystem}"> 
     <f:selectItems 
      value="#{creditcardConfigurationService.externalSystems}" 
      itemLabel="#{system.name}" itemValue="#{system}" 
      var="system" /> 
     <f:converter binding="#{externalSystemConverter}" /> 
     </h:selectOneMenu> 
     .... 
       <a4j:commandButton value="#{label['insert.save']}" 
     action="#{mandateAction.insertNewSystem}" 
     render="mandate_table" execute="@form" 
     oncomplete="if (#{facesContext.maximumSeverity==null}) {#{rich:component('addExternalSystem')}.hide();}" /> 
+0

Donc c'est aléatoire quand l'action est appelée et quand la valeur est soumise? Est-il possible qu'il y ait des erreurs de validation ou de conversion? – user1983983

+0

il n'y a pas d'erreurs de validation/de conversion. Et non, ce n'est pas vraiment aléatoire. Par exemple, si je mets la popup dans ma balise h: form, alors l'action est appelée, mais la valeur de selectbox est nulle. Si je le mets dehors, alors l'action n'est pas appelée, mais la valeur est correcte. et ainsi de suite – user1502353

+0

Il s'agit très probablement d'un croisement de deux choses, dont une que vous avez identifiée: Votre panneau contextuel doit contenir (ou être contenu dans) un ''. Le deuxième suspect est votre portée de haricot. Quelle est la portée de «mandatAction»? – kolossus

Répondre

0

Si votre page a l'un des champs obligatoires conservés comme vider le soumettre à partir du panneau contextuel ne fonctionnera pas. Dans ce cas, incluez le panneau contextuel à l'intérieur d'un formulaire et domElementAttachment = "formulaire", et exécutez le soumettre.

+0

Il n'y a aucun champ vide du tout :) J'ai essayé de replacer le PopupPanel dans la balise et de changer le domElementAttachment en forme. Je suis sûr, que j'ai déjà essayé cela, donc ça ne fonctionnait pas. Mais alors j'ai réalisé que je pouvais changer la valeur d'exécution de mon à l'ID de PopupPanel .... et cela a finalement fonctionné, comme il se doit. – user1502353

Questions connexes