【问题标题】:Rendered attribute not rendering rich panel on value change listener渲染属性未在值更改侦听器上渲染丰富面板
【发布时间】:2012-12-20 08:37:29
【问题描述】:

我正在使用 JSF 1.2 (sun RI) 和 richFaces 3.3 开发应用程序。

我想在选择列表中更改列表值时显示一个面板,然后在“选择列表下方”。

以下是相同的代码:

> <a4j:form ajaxSubmit="true">              
>          
 <h:panelGrid id="videoServiceTab">                                     <h:outputLabel for="deviceSelect" value="Select Device :"/>                       
>               
>               <h:selectOneMenu id="deviceId" value="#{deviceBean.deviceId}" valueChangeListener="#{deviceBean.startLiveStream}">
>                   <f:selectItems  value="#{deviceBean.userDevices}"/>
>                   <a4j:support event="onchange" reRender="videoPanel" />
>               </h:selectOneMenu>                                          
>               <rich:panel id="videoPanel" rendered="#{deviceBean.showPane}">
>                   My Panel..  
>               </rich:panel>                                                </h:panelGrid>   
</a4j:form>

1)当一个列表值被选中时,调用valueChangeListener,更新方法中的showPane值(设置为true,默认值为false)

2)但即使 showPane 值设置为 true ,富面板也不会显示。

3)以下是日志,结合了jsf的“PhaseListener”,清楚地表明,在“RENDER_RESPONSE”完成之前,showPane值设置为true 仍然没有显示 ID 为 videoPanel 的富面板。

4) 支持 bean (deviceBean) 是请求范围的。

----------阶段监听器的日志 ----------

开始阶段 PROCESS_VALIDATIONS 3

显示窗格名为..false

在 startLiveStream 内

从服务方法返回..

END PHASE PROCESS_VALIDATIONS 3

开始阶段 UPDATE_MODEL_VALUES 4

显示窗格名为..true

END PHASE UPDATE_MODEL_VALUES 4

开始阶段 INVOKE_APPLICATION 5

END PHASE INVOKE_APPLICATION 5

开始阶段 RENDER_RESPONSE 6

显示窗格名为..true

显示窗格名为..true

END PHASE RENDER_RESPONSE 6

【问题讨论】:

  • 它应该只适用于普通的h:form。您是否尝试过其他选项,例如删除 panelGrid?看起来 JSF 没有找到要重新渲染的组件的 id。如果您在浏览器中刷新页面,它会显示吗?

标签: richfaces jsf-1.2


【解决方案1】:

我尝试了以下代码并且它有效。从 a4j:outputPanel 的文档中可以看出,它包装了需要更新/修改的组件,对于 panelGrid 来说也是如此,如下所示

<a4j:outputPanel layout="none">
    <h:panelGrid id="videoPanel" rendered="#{deviceBean.showPane}">
    Display Panel..
                                            </h:panelGrid>      
    </a4j:outptPanel>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 2011-06-11
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    相关资源
    最近更新 更多