2010-01-18 25 views
5

Estoy tratando de registrar diferentes instancias de convertidor en la configuración de rostros, usando una clase de convertidor estándar a la que se pasan diferentes parámetros.Propiedad del convertidor JSF

El siguiente código registra dos DateTimeConverters, el primero para las fechas que incluyen el tiempo y el segundo para el tiempo solamente. Pero la propiedad del patrón nunca se establece. Se puede hacer esto?

<converter> 
    <converter-id>dateTimeConverter</converter-id> 
    <converter-class>javax.faces.convert.DateTimeConverter</converter-class> 
    <property> 
     <property-name>pattern</property-name> 
     <suggested-value>yyyy-MM-dd HH:mm:ss</suggested-value> 
    </property> 
</converter> 

<converter> 
    <converter-id>timeConverter</converter-id> 
    <converter-class>javax.faces.convert.DateTimeConverter</converter-class> 
    <property> 
     <property-name>pattern</property-name> 
     <suggested-value>HH:mm:ss</suggested-value> 
    </property> 
</converter> 
+1

no debería ser wiki de la comunidad – Bozho

+0

Indeed not. Edite su pregunta, desmarque la casilla "Wiki comunitario" y guarde. Community Wiki está destinado a ser utilizado solo para preguntas/discusiones subjetivas. Tu pregunta está lejos de ser subjetiva. Es solo una pregunta/problema técnico. – BalusC

+0

Es cierto, no sabía lo que era. Pero no hay una casilla de verificación en la página de edición para deshabilitarlo :( –

Respuesta

6

Desafortunadamente, esto no es posible a través de faces-config.xml. La declaración <property> que estás intentando no se usa durante el tiempo de ejecución.

Si todo lo que desea es controlar el patrón en un lugar, lo mejor que puede hacer es crear un convertidor personalizado. Para este propósito particular, no es tan difícil. Simplemente extienda DateTimeConverter y configure el patrón durante la construcción. Aquí hay un ejemplo básico:

public MyDateTimeConverter extends DateTimeConverter() { 
    public MyDateTimeConverter() { 
     setPattern("yyyy-MM-dd HH:mm:ss"); 
    } 
} 

Obviamente puede obtener el patrón de otro lugar, p. un archivo de propiedades o un archivo xml en classpath.

Registro este convertidor de la siguiente manera:

<converter> 
    <converter-for-class>java.util.Date</converter-for-class> 
    <converter-class>com.example.MyDateTimeConverter</converter-class> 
</converter> 

Esa debe ser la misma. No es necesario f:converter o UIOutput#setConverterId().

+0

Gracias por su explicación. Pero ¿cuál es el uso de estas propiedades en faces-config.xml ? (la etiqueta de propiedad es parte del xsd). –

+0

@JurgenHannaert, mira el [xsd] (http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd), dice: _ Los elementos "atributo" y "propiedad" están destinados a permitir que los desarrolladores de componentes describan más completamente sus componentes a herramientas y usuarios. Estos elementos no tienen semántica de tiempo de ejecución requerida. –

+0

De hecho, como por ejemplo [ctrl + espacio] autocompletar información sobre herramientas/descripciones . – BalusC

Cuestiones relacionadas