Estoy atascado y necesito ayuda externa de expertos JSF con el siguiente problema: Definí algunos convertidores en faces-config.xml para clases específicas, así que no tengo usar el convertidor-atributo o etiqueta todo el tiempo. Por ejemplo:Fetch JSF Converter para clase en ManagedBean (JSF 1.2)
<converter>
<converter-for-class>org.joda.time.DateTime</converter-for-class>
<converter-class>com.example.converter.JodaDateTimeConverter</converter-class>
</converter>
Ahora existe la necesidad de un rastreador de JSF-Componente (en su mayoría ricos: extendedDataTable) que se basa todo el árbol de componentes y la convierte en un nivel tras otro en CSV, HTML o lo que podría ser necesaria más adelante en. Es decir, una forma genérica de exportar a CSV, HTML, ... sin la necesidad de implementarlo cada vez. Casi se realiza (gracias a la gran idea de un viejo colega mío) y funciona genial, excepto por una parte:
Object expressionResult = expression.getValue(FacesContext.getCurrentInstance().getELContext());
expressionResultString = expressionResult.toString();
Ese comando recupera el valor de una h: outputText y la convierte en cadena. Esa última línea es lo que quiero reemplazar con el convertidor por clase si hay un convertidor personalizado para un resultado de expresión específico. No puedo encontrar la manera de encontrar el convertidor exacto para mis clases (como lo especifica faces-config). El FacesContext no parece contener ningún método/objeto útil para mi caso de uso. El acceso al faces-config.xml directamente parece un poco incorrecto. Un enfoque correcto podría ser algo como:
Converter converter = magically_fetch_the_correct_converter_for_expressionResult_type;
converter.getAsString(FacesContext.getCurrentInstance(), component,
expressionResult);
Sería bastante fácil si utiliza el convertidor-id y el atributo/etiqueta apropiada para los mismos componentes pero realmente quiero evitar ese tipo de código adicional inútil.
¿Alguien puede ayudarme?
¡Muchas gracias! Eso era exactamente lo que estaba buscando :) Ojalá hubiera JavaDoc útil en las clases de JSF. Eso ciertamente haría mi vida mucho más fácil. –
El texto 'Application # createConverter()' en mis enlaces de respuesta al javadoc. – BalusC