Fetch JSF Converter для класса в ManagedBean (JSF 1.2)

Я застрял и нуждаюсь в помощи экспертов 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);

Было бы довольно просто, если бы я использовал идентификатор преобразователя -и соответствующий атрибут/тег для самих компонентов, но я действительно хочу избежать такого рода бесполезного дополнительного кода.

Кто-нибудь может мне помочь?

5
задан Michael Colin 9 May 2012 в 12:43
поделиться