2011-05-23 36 views
0

我無法在f:ajax上工作h:panelGroup。 下面是我在做什麼:f:ajax不工作

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> 

它看起來什麼樣子的網頁上:(忽略傻格式化:-)) enter image description here

最後,什麼該頁面的源的樣子:

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

(注意h:panelgroup如何被「吞噬」,由li元素。)

我可以點擊h:commandButton,它工作正常。 當我點擊文本時沒有任何事情發生,因爲從查找源代碼看來,h:panelGroup以及f:ajax都消失了!

就是這樣。對不起,我想知道所有的細節。 感謝您的幫助:-)

回答

0

我想panelGroup會被吞下,因爲裏面只有一個組件。也許jsf優化它。

然後,只剩下h:outputText左側,並且此component未實現javax.faces.component.behavior.ClientBehaviorHolder接口,該接口是獲取附加ajax的組件所需的接口。

您可以改用h:outputLinkh:outputLabel

+0

Tnx!所以,作爲一個後續,你將如何創建一個可點擊的'div',其中可以包含圖像和文本? (意思是說,整個div部分是可點擊的,類似於'h:commandbutton',但對內容和樣式有更多的控制。 – Ben 2011-05-23 11:30:26

0

沒有爲AJAX小POC可能成爲別人

有用此塊將表明,我們可以調用託管bean方法和Ajax在一起,它的工作原理使用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//}