【问题标题】:JSF rendered form not workingJSF 呈现的表单不起作用
【发布时间】:2015-02-23 17:04:59
【问题描述】:

JSF 渲染有这个问题。我有这个包含布尔类型值ulogovan 的 bean。

    @Named("sessionBean")
    @SessionScoped
    public class SessionBean implements Serializable{
    private boolean ulogovan;
    private Zaposleni ulogovanZaposleni;

    public SessionBean() {
        ulogovan = false;
        ulogovanZaposleni = null;
    }    
    public boolean getUlogovan() {
        return ulogovan;
    }    
    public void setUlogovan(boolean ulogovan) {
        this.ulogovan = ulogovan;
    }

我必须根据ulogovan 的值显示一个表单。这是表格的开头:

<h:form id="form" rendered="#{sessionBean.ulogovan == true}">

【问题讨论】:

  • 你想做什么?你得到了什么错误?
  • 我没有收到任何错误,只是没有以任何方式显示表单
  • 除了答案之外,避免在这种情况下在 bean 中使用构造函数。请改用@PostConstruct

标签: jsf jsf-2 rendering


【解决方案1】:

因为ulogovan = false; 所以当你说#{sessionBean.ulogovan == true} 的意思是false == true 也就是false。因此,除非您将 ulogovan 设置为 true,否则您的表单将不会被呈现。

如果您希望根据ulogovan 的值呈现表单,只需这样做:

<h:form id="form" rendered="#{sessionBean.ulogovan}">

【讨论】:

    【解决方案2】:

    您可以在 init() 方法中包含 @PostConstruct 注解。 所以在渲染页面之前,首先会调用这个方法。 您可以在此设置您希望的条件

    @Named("sessionBean")
    @SessionScoped
    public class SessionBean implements Serializable{
    private boolean ulogovan;
    private Zaposleni ulogovanZaposleni;
    
    @PostConstruct
    public void init() {
          setUlogovan(false);
          ulogovanZaposleni = null;
    } 
    
    public boolean getUlogovan() {
        return ulogovan;
    }    
    public void setUlogovan(boolean ulogovan) {
        this.ulogovan = ulogovan;
    }
    

    这肯定会起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-29
      • 1970-01-01
      • 2023-04-05
      • 2012-07-29
      相关资源
      最近更新 更多