论坛: 公开讨论 (Thread #19702)

【Web版】Beanのコピーについて (2008-08-25 15:39 by 匿名 #38434)

チュートリアルのUSERLISTテーブルのBIRTH列はV
ARCHAR2(10)で定義されています。
これをDate型とし、UserBean.javaのbirthもjava.util.Dateで定義したいのですが、
BeanUtilを実行したときに例外が発生します。

全て文字列で管理するのが推奨でしょうか?


回复到 #38434×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) 登录

RE: 【Web版】Beanのコピーについて (2008-08-25 17:18 by 匿名 #38440)

どのメソッドでどのようなエラーが起きたか、
ログを提示されてはいかがでしょうか?

当方の環境では、TimeStampをjava.util.Dateで受け取る事は、
単純にできてますよ。
回复到 #38434

回复到 #38440×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) 登录

RE: 【Web版】Beanのコピーについて (2008-08-25 19:08 by 匿名 #38447)

わかりにくく申し訳ありません。

■例外発生タイミング
 登録画面で登録ボタン押下時
 ⇒dynaFormBeanのbirthからUserBean.birthへコピーする際に発生しています。

■チュートリアルからの修正箇所
 ・DB(Oracle9i)のUSERLIST.BIRTH列
   VARCHAR(10) ⇒ DATE
 ・UserBean.birth
   String ⇒ java.util.Date


■スタックトレース
[2008/08/25 18:55:50][ERROR][SystemExceptionHandler] jp.terasoluna.fw.exception.SystemException: データの受け取り先JavaBeanに値を設定できませんでした:birth.
at jp.terasoluna.fw.service.thin.AbstractBLogicMapper.setParams(AbstractBLogicMapper.java:264)
at jp.terasoluna.fw.service.thin.AbstractBLogicMapper.mapBLogicParams(AbstractBLogicMapper.java:182)
at jp.terasoluna.fw.web.struts.actions.AbstractBLogicAction.getBLogicParams(AbstractBLogicAction.java:511)
at jp.terasoluna.fw.web.struts.actions.AbstractBLogicAction.doExecute(AbstractBLogicAction.java:239)
at jp.terasoluna.fw.web.struts.actions.ActionEx.execute(ActionEx.java:220)
 (・・・ 略)
Caused by: jp.terasoluna.fw.service.thin.BLogicMapperException: jp.terasoluna.fw.util.PropertyAccessException: java.lang.IllegalArgumentException: Cannot invoke jp.terasoluna.thin.tutorial.service.bean.UserBean.setBirth - argument type mismatch
... 32 more





 
回复到 #38440

回复到 #38447×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) 登录

RE: 【Web版】Beanのコピーについて (2008-08-25 19:26 by kimuraku #38449)

BeanUtilは内部的にはcommons-beanutilのPropertyUtilsを利用していますが、Date型⇒String型のオートマッピングには対応していません。
型が合わない場合は、ご提示のエラーメッセージが出力されます。

Date⇔Stringのようなデータバインドの場合、DBアクセス後のResult(UserBean)からActionFormへ値を反映する際に
BLogic内で何らかの文字列表現に変換する必要があります。

また、
>全て文字列で管理するのが推奨でしょうか?
についてですが、ActionFormに限って言えばJavaBean以外のフィールドは全て文字列型で定義するのが良いです。

と言うのも、文字列以外で定義した場合はサーバサイド入力チェックに到達する前に、
リクエストパラメータ⇒ActionFormのデータバインドの段階で実行時例外が発生する可能性があるためです。
回复到 #38434

回复到 #38449×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) 登录

RE: 【Web版】Beanのコピーについて (2008-08-26 08:32 by 匿名 #38466)

> BeanUtilは内部的にはcommons-beanutilのPropertyUtilsを利用していますが、Date型⇒String型のオートマッピングには対応していません。
ありがとうございました。了解しました。

> Date⇔Stringのようなデータバインドの場合、DBアクセス後のResult(UserBean)からActionFormへ値を反映する際に
> BLogic内で何らかの文字列表現に変換する必要があります。
blogic-io.xmlの設定で、日付書式を指定してコピーしてくれるといいんですけどね。
同様に、3桁カンマ区切りの金額をString⇒数値型へコピーする際も例外が発生します。

独自のコンバータを使って、ビジネスロジックでコピーすることを検討します。



回复到 #38449

回复到 #38466×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) 登录