Primefaces p:selectBooleanCheckbox和p:selectBooleanButton可以链接到控制器中的Primitive Data Type布尔变量。
我想有一个可以链接到参考数据类型布尔值的控制器。它必须能够显示null,true和false值。
p:triStateCheckbox可以链接到String变量,但不能链接到布尔值。
在Java控制器中是否有任何JSF / Primefaces UI组件可以表示参考数据类型为Boolean?
您可以编写从String
到Boolean
的转换器,并按照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";
}
}
另请参见: