selectItems convert

Hola a todos

Estoy intentando hacer una lista desplejable en primefaces que me muestra una lista fechas, y estoy intentando ponerlo en formato correcto.He intentado lo siguiente y me da error.¿alguna idea?

<p:selectOneMenu id="prueba" value="#prueba.fecha}" required="true"
                                             requiredMessage="Debes seleccionar una fecha" >
                               
                                <f:selectItems value="#{prueba.fechas}" var="prueba" itemLabel="#{prueba.fecha}" itemValue="#{prueba.id}">
                                    <f:convertDateTime pattern="dd/MM/yyyy" />
                                </f:selectItems>    
</p:selectOneMenu>

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Utilizar java.lang.String

 

Ya sea p:selectOneMenu o h:selectOneMenu, la solución más simple es utilizar java.lang.String en lugar de java.util.Date, porque en caso contrario necesitarás algo no tan simple. He ahí una de las idiosincrasias de JSF.

Si decides utilizar java.lang.String, entonces sería algo como:

Java:

@Model
public class Foo {

    private static final Logger LOG = Logger.getLogger(Foo.class.getName());

    private String date;

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public List<String> getDates() {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        return Arrays.asList(
                sdf.format(new Date(1441083600000L)),
                sdf.format(new Date(1441170000000L)),
                sdf.format(new Date(1441256400000L)),
                sdf.format(new Date(1441342800000L))
        );
    }

    public String submit() {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            System.out.println(sdf.parse(date));
        } catch (ParseException e) {
            LOG.log(Level.SEVERE, "Opps!", e);
        }
        return "";
    }

}

JSF:

<h:form>
    <h:selectOneMenu value="#{foo.date}">
        <f:selectItems value="#{foo.dates}"/>
    </h:selectOneMenu>
    <h:commandButton action="#{foo.submit}" value="Submit"/>
</h:form>

img

~~~