布尔值的JSF或PrimeFaces组件/如何在p:triStateCheckbox中使用布尔值

问题描述 投票:2回答:1

PrimeFaces p:selectBooleanCheckboxp:selectBooleanButton可以链接到控制器中的原始数据类型boolean变量。

我想有一个可以链接到参考数据类型Boolean的控制器。它必须能够显示nulltruefalse值。

p:triStateCheckbox可以链接到String变量,但不能链接到Boolean值。

在Java控制器中是否有任何JSF / PrimeFaces UI组件可以表示参考数据类型Boolean

jsf primefaces
1个回答
4
投票

如果您想按String中的说明使用Boolean,则应编写从TriStateCheckboxdocumentation的转换器:

TriStateCheckbox默认为每个状态传递值“ 0”,“ 1”,“ 2”,并且可以使用转换器对其进行自定义。

因此,请使用类似:

public class TriStateBooleanConverter implements Converter {

  @Override
  public Object getAsObject(FacesContext context, UIComponent component, String value) {
    if (value == null) {
      return null;
    }
    switch (value) {
      case "0": return null;
      case "1": return Boolean.TRUE;
      case "2": return Boolean.FALSE;
      default: throw new ConverterException();
    }
  }

  @Override
  public String getAsString(FacesContext context, UIComponent component, Object value) {
    Boolean bool = (Boolean) value;
    if (bool == null) {
      return "0";
    }
    return bool ? "1" : "2";
  }

}

另请参见:

© www.soinside.com 2019 - 2024. All rights reserved.