用于Boolean的JSF或PrimeFaces组件/如何将Boolean与p:triStateCheckbox一起使用

用于Boolean的JSF或PrimeFaces组件/如何将Boolean与p:triStateCheckbox一起使用,jsf,primefaces,Jsf,Primefaces,PrimeFaces p:selectBooleanCheckbox和p:selectBooleanButton可以链接到控制器中的基本数据类型布尔变量 我想有一个控制器,它可以链接到一个参考数据类型布尔。它必须能够显示空值、真值和假值 p:triStateCheckbox可以链接到字符串变量,但不能链接到布尔值 是否有任何JSF/PrimeFaces UI组件可以在Java控制器中表示引用数据类型Boolean?如果要使用TriStateCheckbox,请编写字符串到Boolean的转换器,

PrimeFaces p:selectBooleanCheckbox和p:selectBooleanButton可以链接到控制器中的基本数据类型布尔变量

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

p:triStateCheckbox可以链接到字符串变量,但不能链接到布尔值


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

如果要使用TriStateCheckbox,请编写字符串到Boolean的转换器,如中所述:

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";
  }

}
另见:


您可以编写一个字符串到布尔值的转换器,并使用三态组件'Should'甚至'must'。。。还有@jasperdevries,它是布尔值而不是布尔值-@Kukeltje我在打电话。。当然,它应该是布尔型的-这也在你的手机上吗-