【问题标题】:show a panel in primefaces depending on a dropdownlist根据下拉列表在 primefaces 中显示面板
【发布时间】:2014-02-10 14:55:32
【问题描述】:

我有一个包含多个值的下拉列表,我只想在选择了一个值时才显示一个面板

这里是简化的代码

 <p:selectOneMenu id="" value="#{myBean.myElement}" >
    <f:selectItem itemLabel="Choose an element itemValue=""  />        
    <f:selectItems value="#{myBean.myElementList}" />
    <p:ajax update="myPanel" listener="#{myBean.handleChange}"/>
 </p:selectOneMenu>   

 <p:panel id="myPanel" header="My Header" style="margin-bottom:10px;" rendered="#{myBean.myElement != null}">  

但这似乎不起作用(仅当我手动刷新页面时才起作用)。 你怎么能解决这个问题?

【问题讨论】:

    标签: jsf primefaces


    【解决方案1】:

    由于myPanel 没有被渲染,组件不会在组件树中,所以以后不能在视图中更新。使用另一个 UIContainer 将其包装为 &lt;h:panelGroup&gt; 并更新此容器:

    <p:selectOneMenu id="" value="#{myBean.myElement}" >
        <f:selectItem itemLabel="Choose an element itemValue=""  />        
        <f:selectItems value="#{myBean.myElementList}" />
        <!-- here update to foo instead of myPanel -->
        <p:ajax update="foo" listener="#{myBean.handleChange}"/>
    </p:selectOneMenu>
    
    <h:panelGroup id="foo">
        <p:panel id="myPanel" header="My Header" style="margin-bottom:10px;"
            rendered="#{myBean.myElement != null}">
    </h:panelGroup>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-07
      • 1970-01-01
      • 1970-01-01
      • 2011-10-23
      相关资源
      最近更新 更多