从jsf页面访问支持bean中的变量

从jsf页面访问支持bean中的变量,jsf,managed-bean,Jsf,Managed Bean,我在jsf页面中有两个primefaces面板组件。我想通过单击primefaces commandButton和页面加载时显示panel1来显示面板上的一些数据。当单击commandButton时,我不想显示其他面板。所以我在backing bean中定义了布尔变量,以便在面板的visible属性中使用。但它不起作用 支持Bean: @ManagedBean @SessionScoped public class Bean implements Serializable { pri

我在jsf页面中有两个primefaces面板组件。我想通过单击primefaces commandButton和页面加载时显示panel1来显示面板上的一些数据。当单击commandButton时,我不想显示其他面板。所以我在backing bean中定义了布尔变量,以便在面板的visible属性中使用。但它不起作用

支持Bean:

 @ManagedBean
 @SessionScoped
 public class Bean implements Serializable {
   private boolean show;

   @PostConstruct
   public void init(){
      this.show=true;
   }
   public void action_commandButton(){
      this.show=false;
   }
  }
Jsf页面

  <p:commandButton style="text-align: center;font-size:12px;"  
                             action="#{bean.action_commandButton()}"  value=""/>

 <!--panel 1 -->
  <p:panel visible="#{bean.show}">
      <p:dataGrid>
        <!-- data from datbase-->
      </p:dataGrid>
  </p:panel>

  <!-- panel 2-->
  <p:panel visible="#{!bean.show}">
      <p:dataGrid>
        <!-- data from datbase-->
      </p:dataGrid>
  </p:panel>

如何解决这个问题?
提前感谢。

命令按钮的JSF标记在哪里?这是Ajax请求还是全文回帖?为什么不按
可见的顺序使用
rendered
属性?我对面板中有datagrid组件的问题感到困惑。因此我尝试使用panel visible属性。提示:最好将bean的范围更改为
@ViewScoped
,这样就可以创建bean了每页访问,而不是按会话访问一次。我认为您只需要为“show”添加一个get和set方法。如果没有,则无法访问专用字段。