Jsf 为什么渲染不在面板上工作

Jsf 为什么渲染不在面板上工作,jsf,panel,rendered-attribute,Jsf,Panel,Rendered Attribute,如何动态显示或隐藏面板 在下面给出的示例中,当我单击btn-1时,会显示panel-2并隐藏panel-1。但当我点击btn-2时,什么也没发生 ManagedBean @ManagedBean @ViewScoped public class SampleController implements Serializable { private Boolean showPanel; public void button1() { showPanel = Bool

如何动态显示或隐藏面板

在下面给出的示例中,当我单击
btn-1
时,会显示
panel-2
并隐藏
panel-1
。但当我点击btn-2时,什么也没发生

ManagedBean

@ManagedBean
@ViewScoped
public class SampleController implements Serializable {
    private Boolean showPanel;

    public void button1() {
        showPanel = Boolean.FALSE;
    }

    public void button2() {
        showPanel = Boolean.TRUE;
    }

    public Boolean showPanel1(){
        return showPanel;
    }

    public Boolean showPanel2(){
        return ! showPanel;
    }
}
XHTML

<h:form id="form">
    <h:panelGroup id="container-panel-1">
          <h:panelGroup id="panel-1" rendered="#{sampleController.showPanel1()}">
              <p:commandButton id="btn-1"
                   actionListener="#{sampleController.button1}" 
                   update=":form:container-panel-1, :form:container-panel-2" />
          </h:panelGroup>
    </h:panelGroup>
    <h:panelGroup id="container-panel-2">
          <h:panelGroup id="panel-2" rendered="#{sampleController.showPanel2()}">
              <p:commandButton id="btn-2"
                   actionListener="#{sampleController.button2}" 
                   update=":form:container-panel-1, :form:container-panel-2" />
          </h:panelGroup>
    </h:panelGroup>
</h:form>

我希望你能帮我做这件事

谢谢,, 贝尔

此代码适用于:

视图:


豆子:

import java.io.Serializable;
导入javax.faces.bean.ManagedBean;
导入javax.faces.bean.ViewScoped;
@ManagedBean
@视域
公共类SampleController实现可序列化{
私有布尔显示面板;
公共空间按钮1(){
showPanel=false;
}
公开作废按钮2(){
showPanel=true;
}
公共布尔值showPanel1(){
返回显示面板;
}
公共布尔值showPanel2(){
返回!显示面板;
}
}

给定代码在
showPanel2()上抛出NPE
。一旦你用
boolean
而不是
boolean
解决了这个问题,它对我很有用。到目前为止,您的问题原因在提供的信息中不可见。我最好的猜测是,您从错误的包中导入了
@ViewScoped
,导致JSF托管bean范围默认为
@RequestScoped
,然后将应用第5点。您好,BalusC,我将
Boolean
更改为
Boolean
并检查了我使用的包,它是
import javax.faces.bean.ViewScoped。当我点击按钮2时,仍然没有任何事情发生。您在哪里看到异常?我在控制台中没有看到任何异常。谢谢如果您没有看到异常并且仍然存在所描述的问题,那么您可能有一个更大的问题:一个严重混乱的开发环境和/或项目。我只是从头开始。