您的位置:首页 > Web前端 > JavaScript

JSF + Primefaces: Problem with “rendered” components with ajax

2013-11-26 11:59 423 查看
Cant seem to get
rendered
to work correctly with
update
attributes. Here is my codes

<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
is a boolean attributes inside
bean
.
setRenderComment
basically toggle the state of
renderComment
like this[/code]
this.renderComment =!this.renderComment;

Right, every time I click on the link
Hey
, I need to refresh to either render
hello
on or off. How can I fix it, so that I dont need to refresh.

solution:

am not using Primefaces but Richfaces on my projects. So I am not really aware on how the refresh process is done by Primefaces. However, I have an idea that can be tested easily.

Your problem may be due to the fact that the component to re-render (i.e. update) is not found on the HTML page. If your
rendered
attribute is equals to
false
, then the
<SPAN>
with
comment
id is not integrated in the HTML page generated. Thus, when the Ajax request is received on the client side, the Ajax engine is not able to refresh this
<SPAN>
as it is not found.

So what you can do is to always render your
panelGroup
and move your
rendered
attribute to a nested
<h:outputText>
that contains the Hello message.

Here is what I am suggesting:

<h:panelGroup id="comment"><h:outputText value="Hello" rendered="#{bean.renderComment}"/></h:panelGroup>

This way, the panelGroup will always be refreshed after the Ajax call, and it will contain the Hello message or not, regarding the value of the
renderComment
attribute of your bean.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: