JSF + PrimeFaces:与Ajax的“渲染”组件的问题
-
04-10-2019 - |
题
编辑
似乎无法得到 rendered
正确工作 update
属性。这是我的代码
<ui:define name="left">
<h:form>
<p:commandLink value="Hey"
actionListener="#{bean.setRenderComment}"
update="comment"/>
</h:form>
</ui:define>
<ui:define name="right">
<h:panelGroup id="comment" rendered="#{bean.renderComment}">
hello
</h:panelGroup>
</ui:define>
renderComment
是里面的布尔属性 bean
. setRenderComment
基本上切换 renderComment
像这样
this.renderComment = !this.renderComment;
是的,每次我单击链接时 Hey
, ,我需要刷新以渲染 hello
打开或关闭。我该如何修复它,这样我就不需要刷新
解决方案
我不是在项目上使用PrimeFaces,而是在项目上使用Richfaces。因此,我并不真正知道PrimeFaces如何完成刷新过程。但是,我有一个可以轻松测试的想法。
你的问题 可能 由于要重新渲染的组件以下事实(即 更新)在HTML页面上找不到。如果你的 rendered
属性等于 false
, ,然后 <SPAN>
和 comment
id是 不是 集成在生成的HTML页面中。因此,当在客户端收到AJAX请求时,Ajax引擎将无法刷新此 <SPAN>
由于找不到。
所以你能做的就是始终渲染 panelGroup
并移动你的 rendered
属于嵌套 <h:outputText>
其中包含 你好 信息。
这是我的建议:
<h:panelGroup id="comment">
<h:outputText value="Hello" rendered="#{bean.renderComment}"/>
</h:panelGroup>
这样,在AJAX调用后,小组组将始终刷新,它将包含 你好 有关是否有关消息的价值 renderComment
豆的属性。
其他提示
由于具有ID的组件 comment
不是表格之一(一个 UINamingContainer
组件)儿童,您需要将ID前缀 :
指示JSF从“上层”扫描。
这应该做:
<p:commandLink value="Hey"
actionListener="#{bean.setRenderComment}"
update=":comment" />
不隶属于 StackOverflow