2011-05-23 106 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//}