У меня проблема с компонентом selectMany из Primefaces.
Я проверяю некоторые опции в selectManyMenu, но возвращаю значение arrayList размером 0 в bean-компоненте bReservarPista
<p:selectManyMenu id="manyHoras" value="#{bReservarPista.horasCheckMarcadas}" converter="HoraCheckConverter"
var="horaCheck" filter="true" filterMatchMode="contains" showCheckbox="true" style="height: 235px">
<f:selectItems value="#{bReservarPista.horasCheck}" var="horaCheck" itemLabel="#{horaCheck.label}" itemValue="#{horaCheck}" />
<p:column>
<h:outputText value="#{horaCheck.label}" />
</p:column>
</p:selectManyMenu>
В бобе метод foward получает массив horasCheckMarcadas размером 0
public void setHorasCheckMarcadas(ArrayList<HoraCheck> horasCheckMarcadas) {
this.horasCheckMarcadas = horasCheckMarcadas;
Thisэто конвертер
@FacesConverter("HoraCheckConverter")
public class HoraCheckConverter implements Converter{
@Override //Este método lo que hace es devolver un objeto buscado con un string value.
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if(value != null && value.trim().length() > 0) {
try {
// el original de cine. se conectaba a ModeloBD. Podría hacer un ModeloBD aqui, o conectar con el dao
DaoHoraCheck daohoraCheck = new DaoImplHoraCheck();
HoraCheck cat= daohoraCheck.verHoraCheck(Integer.parseInt(value));
return cat;
} catch(NumberFormatException e) {
throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Not a valid Cine."));
}
}
else {
return null;
}
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
try {
if(value != null) {
return String.valueOf(((HoraCheck)value).getIdHoraCheck());
}
else {
return null;
}
}
catch (Exception e) {
return null;
}
}
Спасибо