Я застрял и нуждаюсь в помощи экспертов JSF со следующим проблема :Я определил некоторые преобразователи в файлах Faces -config.xml для определенных классов, поэтому мне не нужно постоянно использовать атрибут или тег преобразователя -. Например:
<converter>
<converter-for-class>org.joda.time.DateTime</converter-for-class>
<converter-class>com.example.converter.JodaDateTimeConverter</converter-class>
</converter>
Теперь нужен сканер для JSF -Component (в основном богатый :extendedDataTable ), который строит целое дерево компонентов и преобразует уровень за уровнем в CSV, HTML или что-то еще. понадобится в дальнейшем. А именно общий способ экспорта в CSV, HTML,... без необходимости реализовывать его каждый раз заново. Это почти сделано (благодаря отличной идее моего старого коллеги )и работает отлично, за исключением одной части:
Object expressionResult = expression.getValue(FacesContext.getCurrentInstance().getELContext());
expressionResultString = expressionResult.toString();
Эта команда извлекает значение h :outputText и преобразует его в String. Эту последнюю строку я хочу заменить преобразователем -для класса -, если для определенного выражения expressionResult существует собственный преобразователь. Я не могу узнать, как найти именно этот преобразователь для моих классов (, как указано в конфигурации Faces -). FacesContext, похоже, не содержит никакого полезного метода/объекта для моего варианта использования. Прямой доступ к Faces -config.xml кажется неправильным. Правильный подход может выглядеть примерно так::
Converter converter = magically_fetch_the_correct_converter_for_expressionResult_type;
converter.getAsString(FacesContext.getCurrentInstance(), component,
expressionResult);
Было бы довольно просто, если бы я использовал идентификатор преобразователя -и соответствующий атрибут/тег для самих компонентов, но я действительно хочу избежать такого рода бесполезного дополнительного кода.
Кто-нибудь может мне помочь?