首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >selectBooleanCheckbox对JSF ReRender的支持

selectBooleanCheckbox对JSF ReRender的支持
EN

Stack Overflow用户
提问于 2010-01-09 01:40:28
回答 2查看 16.1K关注 0票数 3

我有一个JSF页面,我希望在其上有一个复选框,当单击该复选框时,将在页面中添加/删除某些其他表单域。下面是我目前拥有的复选框的(简化的)代码:

代码语言:javascript
复制
<h:selectBooleanCheckbox title="showComponentToReRender" value="#{backingBean.showComponentToReRender}">
    <a4j:support event="onsubmit" reRender="componentToReRender" />
</h:selectBooleanCheckbox>

下面是我想要隐藏的组件的代码:

代码语言:javascript
复制
<h:selectOneMenu id="componentToReRender" value="#{backingBean.value}" rendered="#{valuesList.rowCount>1 &amp;&amp; backingBean.showComponentToReRender}">
   <s:selectItems value="#{valuesList}" var="value"/>
</h:selectOneMenu>

目前,点击复选框什么也不做;"selectOneMenu“不会消失。我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-09 06:25:59

您需要将componentToReRender包装在以下任一项中:

<h:panelGroup id="componentToReRenderWrapper">

<a4j:outputPanel id="componentToReRenderWrapper">

因此,实际上您将拥有:

代码语言:javascript
复制
<h:panelGroup id="componentToReRenderWrapper">
    <h:selectOneMenu id="componentToReRender" value="#{backingBean.value}" rendered="#{valuesList.rowCount>1 &amp;&amp; backingBean.showComponentToReRender}">
       <s:selectItems value="#{valuesList}" var="value"/>
    </h:selectOneMenu>
</h:panelGroup>

如果使用panelGroup,则更改reRender="componentToReRenderWrapper";如果使用outputPanel,则删除该属性。

RichFaces文档中找到了确切的解释:

使用reRender最常见的问题是将其指向具有“

”属性的组件。请注意,JSF不会在浏览器DOM中标记应该放置组件结果的位置,以防“呈现”条件返回false。因此,在Ajax请求期间呈现组件之后,RichFaces会将呈现的代码交付给客户端,但不会更新页面,因为更新的位置是未知的。您需要指向一个没有“渲染”属性的父组件。作为替代方案,您可以使用layout="none“包装组件。

票数 10
EN

Stack Overflow用户

发布于 2010-08-19 21:56:23

不要忘了在a4j:outputPanel上设置ajaxRendered="true“

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2029462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档