布尔值的JSF或Primefaces组件

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

Primefaces p:selectBooleanCheckbox和p:selectBooleanButton可以链接到控制器中的Primitive Data Type布尔变量。

我想有一个可以链接到参考数据类型布尔值的控制器。它必须能够显示null,true和false值。

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

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

jsf primefaces
1个回答
0
投票

您可以编写从StringBoolean的转换器,并按照TriStateCheckbox中的说明使用documentation

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.