【问题标题】:primefaces p:selectBooleanCheckbox default checked stateprimefaces p:selectBooleanCheckbox 默认选中状态
【发布时间】:2015-07-15 13:28:03
【问题描述】:

我对这个简单的 p:selectBooleanCheckbox 组件有疑问:

<p:selectBooleanCheckbox value="#{BackingBean.booleanFlag}"> 
      <p:ajax event="change" global="false" />
</p:selectBooleanCheckbox>

在支持 bean 中,我在 @PostConstruct 方法中具有布尔变量 booleanFlag = true 的默认状态。 为什么用'false'值调用setter方法???? 这种方式似乎不可能有一个默认选中的复选框......

这种行为也(并且仅)发生在其他“布尔状态组件”中,例如新的 pf 5.0 组件 p:inputSwitch。 (例如,pf 扩展三态复选框具有基于字符串的状态,并且运行良好)

我的错在哪里?

【问题讨论】:

    标签: jsf primefaces


    【解决方案1】:

    true 表示已检查,而 false 表示未检查....

    private boolean booleanFlag = true; // DEFAULT CHECKED 
    public boolean isBooleanFlag() {
        return booleanFlag;
    }
    
    public void setBooleanFlag(boolean value) {
        this.booleanFlag = value;
    }
    

    问题是setBooleanFlag是用参数value = false调用的

    【讨论】:

      【解决方案2】:

      不,可以有一个默认选中的复选框,只需在您的支持 bean 中声明它时将其值初始化为 true

      private boolean booleanFlag = true;
      public boolean isBooleanFlag() {
          return booleanFlag;
      }
      
      public void setBooleanFlag(boolean value) {
          this.booleanFlag = value;
      }
      

      在你的页面中:

      <p:selectBooleanCheckbox value="#{BackingBean.booleanFlag}"> 
          <p:ajax event="change" global="false" />
      </p:selectBooleanCheckbox>
      

      【讨论】:

      • true 表示选中,false 表示未选中...问题是 setBooleanFlag 调用时参数 value = false
      • 似乎UIInput组件的localValue(在StateHelper内部)仍然设置为false,因此updateModel调用localValue = false的相对设置器。
      • 对不起,我说的是真的而不是假的,我编辑了我的答案。
      • P.S. p:selectBooleanCheckbox 放在表格列的页脚中,也许这会导致组件状态 lyfecycle 的行为修改?
      • 如果它在表格列中,我认为它没有任何影响,请编辑您的问题以包含所有相关代码。
      猜你喜欢
      • 2013-07-19
      • 2019-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-30
      相关资源
      最近更新 更多