[Seasar-user:1605] N:1のオブジェクトを持ったDtoオブジェクトの代入でエラーが発生する問題

Jun Futagawa jfut
2005年 3月 12日 (土) 02:34:12 JST


はじめましてふたがわと申します。

S2JSFを使用していてN:1のオブジェクトを持ったDtoオブジェクトを
扱うのに困った現象がありました。
解決法やアドバイスがありましたら御教授ください。

# 環境
JDK 1.5.0_01
Apache Tomcat/5.5.7
S2 2.2.1 + S2JSF RC4 + S2Dao 1.0.23
PostgreSQL 8.0.1 + postgresql-8.0.309.jdbc3.jar

S2Daoを利用しているとN:1の関係により別のエンティティクラスの
オブジェクトを持ったエンティティを利用することがあると思いますが、
ValueBindingされる際にこの別のエンティティクラスをセットしようと
するとエラーが発生します。
* N:1のエンティティクラスは、S2DaoMakerで生成させたものです。

contentsDto: Nのエンティティクラス
path: 1のエンティティクラス

# コードの例
public class Contents {
	private PathMaster path;
...
}

だとした時に、

<input type="hidden" m:value="#{contentsDto.path}" />
や
<input type="text" m:value="#{contentsDto.path.pathName}" />

として、POSTすると次のようなエラーが発生します。

2005-03-12 01:10:24,937 [http-8080-Processor25] ERROR org.apache.myfaces.renderkit.RendererUtils - No converter for class sample.web.entity.PathMaster found (component id=_id39).
2005-03-12 01:10:26,734 [http-8080-Processor25] ERROR org.apache.myfaces.renderkit._SharedRendererUtils - No Converter for type sample.web.entity.PathMaster found
2005-03-12 01:10:26,812 [http-8080-Processor25] ERROR org.apache.myfaces.el.ValueBindingImpl - Cannot set value for expression '#{contentsDto.path}' to a new value of type java.lang.String
javax.servlet.jsp.el.ELException: String "5, 1, /bbb.html" を "sample.web.entity.PathMaster" 型に変換しようとしましたが、その型に対応する PropertyEditor が存在しません
	at org.apache.commons.el.Logger.logError(Logger.java:481)

また、このN:1のエンティティクラスで値を持っている状態で、
formのPOSTで前のページに戻ると、1の方(contentsDto.path)の
オブジェクトがnullになります。

POSTではなく次のように既に値がある時に、値を表示するだけであれば
問題なく表示されます。
<span m:value="#{contentsDto.path.pathName}">/ccc/index.html</span>

S2JSFでN:1の1の関係を保持したまま上手く扱うことはできませんでしょうか?

よろしくお願いいたします。

-- 
ふたがわ



Seasar-user メーリングリストの案内