En la página principal de los foros
encontrarás los enlaces al
feed general
y al de cada uno de los foros.
Subscribete para mantenerte informado de los cambios y responde a las dudas siempre que te sea posible
ok. gracias Voy a checarlo aunq un no tengo conocimientos de ...
Necesito una aplicion / pluging que me permita medir el cons ...
Debes tener el servidor con el web service en marcha y asegu ...
hola estoy empezando a programar en java y estoy utilizando ...
Saludos a todos, tengo experiencia trabajando en J2EE con JS ...
| problema con selectOneMenu y "selected" | 27/11/2008 19:46 | |
| assault |
Tengo un problema que me está sacando canas verdes, pues me parece ya ilógico... A ver, empiezo. Tengo 3 clases: Clientes, Horarios y Configuraciones. (En realidad es algo mucho más complejo, lo resumí bastante, que para el caso da lo mismo xD) Va mas o menos asi la estructura de cada uno: Cliente: Long id String nombre Horario: String id String denominacion Producto: Long id String nombre Configuracion: Long id Cliente cliente Producto producto Horario horario Los recibo a traves de webservices. El tema va asi: el cliente tiene productos y configuraciones para esos poductos. Por ejemplo, Cliente=Pedro, Producto=Periodico, Horario=mañana.... (mal ejemplo, pero por ahi viene la mano). Eso esta definido en la entidad configuracion. El sistema debe tener una pagina donde se deban configurar ciertas cosas para un cliente, entre ellas, el horario. En el "ClienteBean" traigo las configuraciones de un cliente y los horarios disponibles (para el combo). Coloco solo esos metodos, para no alargar mucho el tema: public List<ConfiguracionesCliente> getConfiguraciones() { try { c = this.clienteRemoteImplPort.getConfPorCliente(cliente.getNroC liente(), producto); } catch (IllegalArgumentException_Exception ex) { Logger.getLogger(ClienteBean.class.getName()).log(Level.SEVE RE, null, ex); } return c; } public List<SelectItem> getHorariosDisponibles() { ArrayList<SelectItem> l = new ArrayList<SelectItem>(); try { for (Horario h : this.clienteRemoteImplPort.getHorarios()) { l.add(new SelectItem(h, h.getDenominacion())); } } catch (Exception ex) { Logger.getLogger(ClienteBean.class.getName()).log(Level.SEVE RE, null, ex); } return l; } este es mi xhtml (resumido nuevamente): <ui:repeat var="row1" value="#{ClienteBean.configuraciones}"> <tr> <td> <h:selectOneMenu id="horario" value="#{row1.horario}" converter="HorarioConverter"> <f:selectItems value="#{ClienteBean.horariosDisponibles}"/> </h:selectOneMenu> </td> </tr> </ui:repeat> Me ahorre toda la codificacion de la pagina para no cansarlos xD Luego, esta el converter: public Object getAsObject(FacesContext context, UIComponent comp, String value) throws ConverterException { try { ClienteRemoteImpl clienteRemoteImplPort = WsResourceBean.getInstance().getClienteRemoteImplPort(); Horario horario = clienteRemoteImplPort.getHorario(value); return horario; } catch (Exception e) { Logger.getLogger(HorarioConverter.class.getName()).log(Level .SEVERE, e.getLocalizedMessage()); return null; } } public String getAsString(FacesContext context, UIComponent component, Object object) throws ConverterException { if (object == null) { return null; } if (object instanceof Horario) { return ((Horario) object).getId(); } else { throw new IllegalArgumentException("object:" + object + " of type:" + object.getClass().getName() + "; expected type: Horario"); } } Y luego declaro el converter en el faces-config. El problema es que no me imprime los "selected" en el combo, cuando el cliente ya tiene guardado un horario en su configuracion... El getAsString funciona, pues si coloco un output text con el objeto Horario y el converter me imprime correctamente el Id. Si cambio la seccion del combo por: <h:selectOneMenu id="horario" value="#{row1.horario.id}"> <f:selectItems value="#{ClienteBean.horariosDisponibles}"/> </h:selectOneMenu> Y en el Bean, en el metodo para traer los horarios disponibles cambio "l.add(new SelectItem(h, h.getDenominacion()));" por "l.add(new SelectItem(h.getId, h.getDenominacion()));" SI que funciona el "selected". Pero no puedo hacerlo por ese modo pues debo guardar las configuraciones con otro metodo... aparte que no seria lo indicado... Cual puede ser el problema? Necesitan mas datos para ayudarme? P.D.: el sistema no da ningun error de compilacion. Si encuentran algun errores que tiendan a eso en el codigo que subi (fallas en puntuacion, parentesis, dependencias, nombres, etc) es porque el codigo que les muestro es solo un ejemplo escrito para hablar del error, basado en la situacion real. |
|
|
||