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

Bud*_*tne 3 jsf primefaces

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

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

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

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

Jas*_*ies 7

如果您想使用文档中解释的那样,您应该为 to 编写一个转换String器:BooleanTriStateCheckbox

\n\n
\n

TriStateCheckbox 默认为每个状态传递值 \xe2\x80\x9c0\xe2\x80\x9d、\xe2\x80\x9c1\xe2\x80\x9d、\xe2\x80\x9c2\xe2\x80\x9d,这可以是使用转换器定制。

\n
\n\n

所以,使用类似的东西:

\n\n
public class TriStateBooleanConverter implements Converter {\n\n  @Override\n  public Object getAsObject(FacesContext context, UIComponent component, String value) {\n    if (value == null) {\n      return null;\n    }\n    switch (value) {\n      case "0": return null;\n      case "1": return Boolean.TRUE;\n      case "2": return Boolean.FALSE;\n      default: throw new ConverterException();\n    }\n  }\n\n  @Override\n  public String getAsString(FacesContext context, UIComponent component, Object value) {\n    Boolean bool = (Boolean) value;\n    if (bool == null) {\n      return "0";\n    }\n    return bool ? "1" : "2";\n  }\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

也可以看看:

\n\n\n