f:ajax不工作

时间:2011-05-23 10:02:21

标签: html ajax jsf jsf-2

我无法让f:ajax使用h:panelGroup。 这就是我正在做的事情:

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:panelGroupf:ajax已经消失了!

就是这样。对不起,我希望得到所有细节。 感谢您的帮助: - )

2 个答案:

答案 0 :(得分:0)

我认为panelGroup会被吞下,因为里面只有一个组件。也许jsf会优化它。

然后只剩下h:outputText,而component没有实现连接ajax的组件所需的javax.faces.component.behavior.ClientBehaviorHolder接口。

您可以使用h:outputLinkh:outputLabel代替。

答案 1 :(得分: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//}