У меня была похожая проблема, и я согласен с предыдущим постом, вы должны решить эту проблему на постоянном уровне.Однако есть и другие решения.Моя проблема была следующей: у меня есть столбец TINYINT в базе данных, который представлял логическое значение true или false (0 = false, 1 = true).Итак, я хотел отобразить их и обработать как логическое значение в моем приложении JSF.К сожалению, это было не совсем возможно, или просто я не нашел правильного пути.Но вместо того, чтобы использовать флажок, я решил использовать selectOneMeny и преобразовать эти значения в «Да» или «Нет».Вот код, так что кто-то с подобной проблемой может использовать его.
Конвертер:
@FacesConverter("booleanConverter")
public class BooleanConverter implements Converter{
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
short number= 0;
try {
if (value.equals("Yes")) {
number= 1;
}
} catch (Exception ex) {
FacesMessage message = new FacesMessage();
message.setSeverity(FacesMessage.SEVERITY_FATAL);
message.setSummary(MessageSelector.getMessage("error"));
message.setDetail(MessageSelector.getMessage("conversion_failed") + ex.getMessage());
throw new ConverterException(message);
}
return number;
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
return value.toString();
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
JSF Страница:
<h:selectOneMenu id="selectOnePlayerSucc" value="#{vezbaTrening.izvedenaUspesno}" converter="booleanConverter">
<f:selectItems id="itemsPlayerSucc" value="#{trainingOverview.bool}" var="opt" itemValue="#{opt}" itemLabel="#{opt}"></f:selectItems>
в моем ManagedBean я создал список с возможными значениями («Да» и «Нет»)
private List<String> bool;
public List<String> getBool() {
return bool;
}
public void setBool(List<String> bool) {
this.bool = bool;
@PostConstruct
public void init () {
...
bool = new LinkedList<>();
bool.add("Yes");
bool.add("No");
}