次の問題を抱えているJSFの専門家の助けが必要です。 特定のクラスのfaces-config.xmlにいくつかのコンバーターを定義しましたが、コンバータ属性またはタグを常に使用すること。たとえば、次のようにManagedBean(JSF 1.2)のクラスのJSF Converterを取得する
<converter>
<converter-for-class>org.joda.time.DateTime</converter-for-class>
<converter-class>com.example.converter.JodaDateTimeConverter</converter-class>
</converter>
今JSFコンポーネント(主に豊富:extendedDataTable)のためのクローラが必要とされている全コンポーネントツリーを構築し、CSVにレベルの後にレベルを変換し、HTMLまたは何でも、後で必要になる場合がありますに。つまり、CSV、HTMLなどにエクスポートする一般的な方法です。毎回毎回実装する必要はありません。それはほとんど(私の昔の同僚の素晴らしいアイデアのおかげで)行われ、それが一部を除いて素晴らしい仕事ん:outputTextのと文字列に変換します。コマンド
Object expressionResult = expression.getValue(FacesContext.getCurrentInstance().getELContext());
expressionResultString = expressionResult.toString();
は、hの値を取得します。最後の行は、特定のexpressionResultのカスタムコンバータがある場合、converter-for-classで置き換えたいものです。自分のクラスの正確なコンバータを(faces-configで指定されているように)見つける方法を見つけることができません。 FacesContextは、私のユースケースに対して有用なメソッド/オブジェクトを保持しているようには見えません。 faces-config.xmlに直接アクセスするのは間違っているようです。
Converter converter = magically_fetch_the_correct_converter_for_expressionResult_type;
converter.getAsString(FacesContext.getCurrentInstance(), component,
expressionResult);
私はコンポーネント自身のためにコンバータ-idと適切な属性/タグを使用しますが、私は本当に役に立たない追加のコードのようなものを避けたい場合にはかなり簡単だろう:正しいアプローチは、次のようになります。
誰かが私を助けてくれますか?
ありがとうございました!それはまさに私が探していたものでした:)私は、JSFクラスに便利なJavaDocがあったことを願っています。それは確かに私の人生をもっと楽にしてくれるだろう。 –
javadocへの私の答えのリンクのテキスト 'Application#createConverter()'。 – BalusC