- - PR -
ERROR org.apache.myfaces.renderkit.RendererUtils - No converter for class
1
投稿者 | 投稿内容 | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-11-23 23:30
MyFaces+Spring+Hibernate環境でWebアプリを
作っていますが、下記のようなエラーが頻発します。 ---- 2005-11-22 13:26:17,738 [http-8080-Processor24] ERROR org.apache.myfaces.renderkit.RendererUtils - No converter for class hoge.package.HogeClass found (component id=_id16). ---- hoge.package.HogeClassは、managed-beanのフィールドに 使用しているクラスで、 private HogeClass hoge; JSPでは、 <h:outputText value="#{hogeClass.hoge}" /> といった使い方をしていて、 まぁ、特にStringでなくても、toString()で表示して くれるだろうとの思惑の基、正しく表示されています。 しかし、上記エラーが出ます。 エラー回避策はございますでしょうか? | ||||||||||||||||||||||||
|
投稿日時: 2005-11-25 18:42
MyFaces1.1.0(SpringもHibernateも不使用)で適当なクラス「sample.User」を
といった形で呼んでみたところ、
といった文字列が表示され、エラーログは特に出力されませんでした。 RendererUtilsのソースを読んでみた感じでは、faces-config.xmlの<converter>に当該クラスに関連するものが無ければエラーログを出力せずにスルーしそうな雰囲気(1.0.9も同様)なのですが、<converter>の設定はどんな感じでしょうか。 ちなみに、下記のような設定をfaces-config.xmlに入れて実行したところ、見事「No converter for class sample.User found (component id=_id0).」というエラーログが出力されました。
| ||||||||||||||||||||||||
|
投稿日時: 2005-11-25 19:07
確認していただいてありがとうございます。
<converter>は、今のところ使用しておりません。 エラーログを出力せずにスルーしてくれないですねぇ。 Converterを作成してみようと思ったのですが、 private HogeClass hoge; HogeClassは、実はインターフェースでして、 実装クラスが特定できない場合、Converterをどのように 作ればよいのかわからなくなりました。 | ||||||||||||||||||||||||
|
投稿日時: 2005-11-26 00:19
んー。エラーログの方は謎ですねぇ。
前述のsample.Userをインターフェースにしてみたのですが、エラーログは出力されませんでした。 インターフェースのConverterについては普通のクラスのConverterと同じように作れると思います。 サンプルとしてはMyFaces1.1.0のTomahawkに入っている「fileupload」が使えると思います。 このコンポーネントは、インターフェース「UploadedFile」に対してコンバータ「UploadedFileConverter」を適用しており、これらをtomahawk.jarのMETA-INFに格納されているfaces-config.xmlで以下のように関連付けています。
まぁ、「UploadedFileConverter」は「getAsString()」に以下のような処理が入っているだけですので、サンプルというほど大層なものではありませんが……。
| ||||||||||||||||||||||||
|
投稿日時: 2005-11-26 17:19
たいへんお世話になっております。
Converterを作って、faces-config.xmlに追加しましたが、 結果はかわらないです。 もし、よろしければ、 sample.Userのソースを見せていただけないでしょうか? | ||||||||||||||||||||||||
|
投稿日時: 2005-11-26 19:50
sample.Userは会社で使っているコードを流用しているため、改めてブランクから実験用コードを作りました。
Javaソース×3本 Dummy.java
DummyImpl.java
MyBean.java
JSPファイル×1本 dummy.jsp
設定ファイル×1本 faces-config.xml
他にlog4j.propertiesとweb.xmlがありますが、これらは省略します。 上記のようなアプリケーションをJ2SE1.5_04、MyFaces1.1.0、Tomcat4.1.31で動かしたところ、エラーログは出力されずに画面に「Data is [ sample.DummyImpl@d2883b ]. 」と表示されました。 ここで、faces-config.xmlに以下の行を追加してみました。
すると、エラーログに「java.lang.ClassNotFoundException: dummy」と「No converter for class sample.DummyImpl found (component id=_id1).」が出力され、画面には「Data is [ sample.DummyImpl@8b60a ]. 」と表示されました。 次の投稿でConverterを付けてみます。 | ||||||||||||||||||||||||
|
投稿日時: 2005-11-26 20:08
以下のようなソースを追加しました。
DummyConverter.java
また、faces-config.xmlの<converter>の記述を以下のように変更しました。
この状態で実行したところ、エラーログは出力されずに画面に「Data is [ boee ]. 」と表示されました。 んー。何ででしょうねぇ。 | ||||||||||||||||||||||||
|
投稿日時: 2005-11-28 00:48
ソースをご提供いただき、ありがとうございました。
これをもとに調査したいと思います。 ひとまず、ありがとうございました。 |
1