布尔值的 JSF 或 PrimeFaces 组件/如何将布尔值与 p:triStateCheckbox 一起使用
JSF or PrimeFaces component for Boolean / how to use Boolean with p:triStateCheckbox
PrimeFaces p:selectBooleanCheckbox
和 p:selectBooleanButton
可以链接到控制器中的原始数据类型 boolean
变量。
我想要一个可以链接到引用数据类型的控制器 Boolean
。它必须能够显示 null
、true
和 false
值。
p:triStateCheckbox
可以链接到 String
变量,但不能链接到 Boolean
值。
是否有任何 JSF/PrimeFaces UI 组件可以在 Java 控制器中表示引用数据类型 Boolean
?
如果您想使用 TriStateCheckbox
,您应该编写一个从 String
到 Boolean
的转换器,如 documentation:
中所述
TriStateCheckbox passes values “0”, “1”, “2” by default for each state and this can be customized using a converter.
所以,使用类似的东西:
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";
}
}
另请参阅:
- Conversion Error setting value for 'null Converter' - Why do I need a Converter in JSF?
PrimeFaces p:selectBooleanCheckbox
和 p:selectBooleanButton
可以链接到控制器中的原始数据类型 boolean
变量。
我想要一个可以链接到引用数据类型的控制器 Boolean
。它必须能够显示 null
、true
和 false
值。
p:triStateCheckbox
可以链接到 String
变量,但不能链接到 Boolean
值。
是否有任何 JSF/PrimeFaces UI 组件可以在 Java 控制器中表示引用数据类型 Boolean
?
如果您想使用 TriStateCheckbox
,您应该编写一个从 String
到 Boolean
的转换器,如 documentation:
TriStateCheckbox passes values “0”, “1”, “2” by default for each state and this can be customized using a converter.
所以,使用类似的东西:
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";
}
}
另请参阅:
- Conversion Error setting value for 'null Converter' - Why do I need a Converter in JSF?