我无法让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>
网页上的内容:(忽略愚蠢的格式:-))
最后,页面的来源是什么样的:
<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 :(得分:0)
我认为panelGroup会被吞下,因为里面只有一个组件。也许jsf会优化它。
然后只剩下h:outputText
,而component没有实现连接ajax的组件所需的javax.faces.component.behavior.ClientBehaviorHolder接口。
您可以使用h:outputLink
或h: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//}