Java JSF+;Primefaces:问题在于;“提供”;使用ajax的组件
编辑Java JSF+;Primefaces:问题在于;“提供”;使用ajax的组件,java,jsf,primefaces,Java,Jsf,Primefaces,编辑 似乎无法使渲染正确使用更新属性。这是我的密码 <ui:define name="left"> <h:form> <p:commandLink value="Hey" actionListener="#{bean.setRenderComment}" update="comment"/> </
似乎无法使
渲染
正确使用更新
属性。这是我的密码
<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>
好的,每次我点击链接
Hey
,我都需要刷新以打开或关闭渲染hello
。如何修复它,这样我就不需要刷新,因为ID为comment
的组件不是表单的子组件(一个UINamingContainer
组件),所以需要在ID前面加:
以指示JSF从“上层”扫描
这应该做到:
<p:commandLink value="Hey"
actionListener="#{bean.setRenderComment}"
update=":comment" />
我在项目中使用的不是Primefaces,而是Richfaces。因此,我并不知道Primefaces是如何完成刷新过程的。然而,我有一个想法,可以很容易地测试 您的问题可能是由于在HTML页面上找不到要重新呈现(即更新)的组件。如果您的
呈现的
属性等于假
,则带有注释的
id不集成在生成的HTML页面中。因此,当客户端接收到Ajax请求时,Ajax引擎无法刷新此
,因为找不到它
因此,您可以做的是始终呈现panelGroup
,并将rendered
属性移动到包含Hello消息的嵌套
以下是我的建议:
<h:panelGroup id="comment">
<h:outputText value="Hello" rendered="#{bean.renderComment}"/>
</h:panelGroup>
这样,在Ajax调用之后,panelGroup将始终刷新,并且它将包含Hello消息或不包含Hello消息,这与bean的renderComment
属性的值有关。Ohh-wow。我不知道update
只能在同一级别上工作。如果我有多个级别呢。我尝试了::comment
,但它不起作用。你能看看我的最新帖子吗?@Harry:romaintaz把它钉牢了。谢谢。它是有效的:)。我之所以使用panelGroup
是因为,我有许多组件,我只想使用一个rendered
属性来启用或禁用它们。如果我必须这样做,我想,我还是把panelGroup
拿出来吧。非常感谢男士:D
<h:panelGroup id="comment">
<h:outputText value="Hello" rendered="#{bean.renderComment}"/>
</h:panelGroup>