f:ajax不起作用

问题描述

| 我很难让ѭ0进入on1的工作。 这是我正在做的事情: 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>
网页上的外观:(忽略愚蠢的格式:-)) 最后,页面的来源如下所示:
<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> 
(注意
li
元素如何“吞噬”
h:panelgroup
。) 我可以单击
h:commandButton
,它可以正常工作。 当我单击文本时什么也没有发生,这是有道理的,因为从源代码中看,ѭ1和ѭ0消失了! 而已。抱歉,长度有限,但我想知道所有细节。 谢谢您的帮助 :-)     

解决方法

我认为panelGroup将被吞噬,因为其中只有一个组件。也许jsf对其进行了优化。 然后只剩下“ 9”,并且此组件未实现javax.faces.component.behavior.ClientBehaviorHolder接口,该接口对于附加了ajax的组件是必需的。 您可以改用
h:outputLink
h:outputLabel
。     ,进行POC的小型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//}