2011-05-23 5 views
0

J'ai du mal à faire fonctionner f:ajax sur un h:panelGroup. Voici ce que je fais:f: ajax ne fonctionne pas

code JSF:

<h:panelGroup id="contacts_tab_contacts_list_list"> 
    <h:form> 
    <ul> 
     <c:forEach items="#{currentDevice.contacts}" var="contact"> 
      <li> 
       <f:ajax event="click" onevent="logcheck()"> 
        <h:panelGroup layout="block" 
           styleclass="contacts_tab_contacts_list_quickview_box" > 
          <h:outputText value="#{contact.firstName} #{contact.familyName}" /> 
        </h:panelGroup> 
       </f:ajax> 

       <f:ajax event="click" onevent="logcheck()"> 
        <f:param value="#{contact.getUUID}" name="currContactUUID" /> 
        <h:commandButton value="#{contact.firstName} #{contact.familyName}" 
        styleclass="contacts_tab_contacts_list_quickview_box" /> 
       </f:ajax> 
      </li> 
     </c:forEach> 
    </ul> 
    </h:form> 
</h:panelGroup> 

Qu'est-ce qu'il ressemble à la page Web: (Ignore formatage idiot :-)) enter image description here

Et enfin, ce que le source de la page ressemble à:

<li> 
    Name - 35 Family - 35 
    <input 
     id="j_id594943238_6609edf4:j_id594943238_6609ec58" 
     name="j_id594943238_6609edf4:j_id594943238_6609ec58" 
     type="submit" 
     value="Name - 35 Family - 35" 
     onclick=".. removed .." /> 
</li> 

(Remarquez comment la h:panelgroup a été "avalée" par le li élément.)

Je peux cliquer sur le h:commandButton et cela fonctionne correctement. Rien ne se passe quand je clique sur le texte et cela a du sens car, comme il semble de regarder dans la source, le h:panelGroup ainsi que le f:ajax ont disparu!

C'est tout. Désolé pour la longueur mais je voulais obtenir tous les détails. Merci pour l'aide :-)

Répondre

0

Je pense que le panelGroup sera avalé puisqu'il n'y a qu'un seul composant à l'intérieur. Peut-être que jsf l'optimise.

Ensuite, il ne reste que le h:outputText et ce component n'implémente pas l'interface javax.faces.component.behavior.ClientBehaviorHolder qui est requise pour un composant qui est associé à ajax. Vous pouvez utiliser h:outputLink ou h:outputLabel à la place.

+0

Tnx! Donc, en guise de suivi, Comment feriez-vous un «div» cliquable qui peut contenir des images et du texte? (Autrement dit, toute la section div serait cliquable, semblable à un 'h: commandbutton' mais avec plus de contrôle sur le contenu et le style. – Ben

0

a fait petit pour POC ajax peut être utile pour les autres

Ce morceau montrera que nous pouvons appeler la méthode de gestion et de haricots Ajax ensemble et il fonctionne à l'aide JSF2.0

<h:form>  
    <h:inputText id="comments" value="#{photoManagedBean.name}"></h:inputText> 

    <h:commandButton value="Comments Input" > 
    <f:ajax execute="comments" listener="#{photoManagedBean.saveComments()}" render="displayRecentComments" /> 

    </h:commandButton> 
    <br/> 

    <table width="600" border="0" height="80"> 
    <td> 
     <h:outputText id="displayRecentComments" value="#{photoManagedBean.name}"/> 
    </td> 
    </table> 
</h:form> 

ManagedBean:

public void saveComments() { //ur code//}