2010-09-14 5 views
0

j'ai écrit le code suivant,JSF AJAX demande ne fonctionne pas avec hx: panelDialog

 <h:form id="PrefForm" > 
     <hx:commandExButton id="preferenceButton" type="button" style="align:right;" value="#{nls.preferenceLink }" title="#{nls.preferenceLinkTitle}" > 
        <hx:behavior event="onclick" behaviorAction="get" targetAction="prefPanelGroup"></hx:behavior> 
        <hx:behavior event="onclick" behaviorAction="show;stop" targetAction="preferenceSet"></hx:behavior> 
     </hx:commandExButton> 

     <hx:panelDialog id="preferenceSet" type="modal" styleClass="panelDialog" title="#{nls.preferenceDialogTitle}" > 
      <h:outputText styleClass="panelStartMessage" style="display:block;" value="#{nls.preferenceDialogWindowText}" /> 

      <h:panelGroup id="prefPanelGroup" rendered="#{neoReport.hasSelectItem }" style="display:block;width:300px;height:360px;overflow:auto;" > 
       <hx:ajaxRefreshRequest id="refreshform" /> 
       <h:selectManyCheckbox value="#{neoReport.selectedItems}" layout="pageDirection"> 
         <f:selectItems value="#{neoReport.selectItems}" /> 
       </h:selectManyCheckbox> 
      </h:panelGroup> 

      <hx:panelBox id="noCommandWindow" rendered="#{!neoReport.hasSelectItem }" style="display:block;width:300px;height:50px;" layout="lineDirection"> 
       <h:outputText styleClass="outputText" id="cmdInfo" value="#{nls.noCommands}" /> 
      </hx:panelBox> 

      <h:panelGroup id="buttonBox1" styleClass="panelStartBox" > 
        <hx:commandExButton id="submitPref" styleClass="commandExButton" type="submit" value="#{nls.submit}" action="#{neoReport.action}"> 
         <hx:behavior event="onclick" behaviorAction="hide" targetAction="preferenceSet" id="behaviorSubmitPref" /> 
        </hx:commandExButton> 
        <hx:commandExButton id="CancelPref" styleClass="commandExButton" type="submit" value="#{nls.cancel}" action="neoReport"> 
         <hx:behavior event="onclick" behaviorAction="hide" targetAction="preferenceSet" id="behaviorCancelPref" /> 
        </hx:commandExButton> 
      </h:panelGroup> 
     </hx:panelDialog> 
    </h:form> 

idée de base derrière ce code est d'avoir un bouton sur la page, lorsque l'utilisateur clique, il devrait obtenir les dernières données de bean (en extrayant un fichier, qui est continuellement mis à jour) et remplit l'objet List dans la base de données, de sorte que h: selectManyCheckBox peut le rendre. J'ai donc ajouté un comportement avec commandExButton, afin qu'il obtienne les nouvelles données et il devrait rendre les dernières options dans selectManyCheckBox. Mais de ces deux hx: comportement, seul le premier travaille, son appel de la fonction getter de

<f:selectItems value="#{neoReport.selectItems}" 

mais ce ne est pas rendu la panelDialog further.If i supprimer le comportement de « get » il affichera la panneau de dialogue mais pas avec les données mises à jour. Donc, je ne suis pas en mesure de savoir, ce qui ne va pas exactement je fais ici.Peut-on aider quelqu'un?

Répondre

0

Tout d'abord je ne sais pas quel type de bibliothèque de balises est-ce. Vous devriez le signaler dans les tags et/ou dans la question.

Vous ne devriez avoir qu'une seule étiquette <hx:behavior>, qui fait tout le travail pour vous. Si vous le faites, vous devriez avoir une méthode qui appelle les trois méthodes. Est-il possible avec ces balises de rediffuser plusieurs composants avec AJAX - comme targetAction="prefPanelGroup, preferenceSet"? Pour autant que je sache, le fait de recommencer preferenceSet entraînera un nouveau rendu du prefPanelGroup, donc il est inutile de le redéclairer séparément.

En outre, la redirection prefPanelGroup fonctionnera uniquement en indiquant à la balise <hx:behavior> un ID plus précis, par exemple "PrefForm:prefPanelGroup".

Hope this helps, Daniel

+0

Les balises 'hx' font partie de la "IBM Faces Client Framework", une bibliothèque de composants JSF mal documenté qui est disponible exclusivement par IBM Websphere/RAD. – BalusC