[Seasar-user:21601] Re: SAStrutsアクションフォームのTimestamp型のプロパティについて

YASUO HIGA [E-MAIL ADDRESS DELETED]
2013年 4月 18日 (木) 10:43:28 JST


ひがです。

基本的に、ActionFormのプロパティは、文字列で定義してください。

よろしくお願いします。
________________________________________
差出人: seasar-user-bounces @ ml.seasar.org [seasar-user-bounces @ ml.seasar.org] が次の人の代理で送信しました: Yoshiaki Hidai [yoshiaki.hidai @ ikic.co.jp]
送信日時: 2013年4月17日 16:29
宛先: seasar-user @ ml.seasar.org
件名: [Seasar-user:21599] SAStrutsアクションフォームのTimestamp型のプロパティについて

はじめまして、樋代と申します。
よろしくお願いいたします。

SAStrutsでWebアプリケーションを構築しております。
画面の値が、アクションフォームにうまく入らない問題が出てきたため、
質問させていただきます。


画面で下記のようなTimestamp型の値を持つhiddenを用意し、
<input type="hidden" name="updateTimestamp" value="2013-04-16 13:27:23.357">


この値がsubmitされたときに下記のアクションフォームのプロパティに
値が入ってくるようにしたいと思っています。

public class UserMstForm {
        public Timestamp updateTimestamp;
}


実際、上記のTimestamp型の値をsubmitすると、
アクションフォームに値を設定しようとされるのですが、
その際中にS2RequestProcessorの中で例外が発生します。(※メールの一番下に添
付)

ソースを追ってみると、Timestamp型の値に対して、
DateConversionUtilで日付でフォーマット(yyyy/MM/dd)しようとして失敗していま
す。

アクションフォームではTimestamp型のプロパティは推奨されていないのでしょう
か。
DBから取得したTimestamp型の値をそのまま画面に渡したいので、
出来ればTimestamp型のプロパティを使いたいとおもっております。

暫定的に、TimestampConversionUtilのtoTimestampの中で、
下記の追加コードがあれば、この例外は発生しないのですが、
公式な対応で解決したいと思っております。

    public static Timestamp toTimestamp(Object o, String pattern) {
        if (o instanceof Timestamp) {
            return (Timestamp) o;
        }
        ↓■追加部分
        if (o instanceof String) {
            return Timestamp.valueOf((String)o);
        }
        ↑■追加部分

        Date date = DateConversionUtil.toDate(o, pattern);
        if (date != null) {
            return new Timestamp(date.getTime());
        }
        return null;
    }


ご存じの方、ご意見を聞かせていただければと思います。
よろしくお願いいたします。






■例外
org.seasar.framework.beans.IllegalPropertyRuntimeException: [ESSR0059]クラス
(jp.co.ikic.gabriel.form.UserMstForm)のプロパティ(updateTimestamp)の設定に失
敗しました。理由は
org.seasar.framework.beans.IllegalPropertyRuntimeException: [ESSR0059]クラス
(jp.co.ikic.gabriel.form.UserMstForm)のプロパティ(updateTimestamp)の設定に失
敗しました。理由はorg.seasar.framework.exception.ParseRuntimeException:
[ESSR0050]解析に失敗しました。理由はjava.text.ParseException: Unparseable
date: "2013-04-16 13:27:23.357"
        at
org.seasar.struts.action.S2RequestProcessor.processPopulate(S2RequestProcess
or.java:293)
        at
org.seasar.struts.action.S2RequestProcessor.process(S2RequestProcessor.java:
104)
        at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
        at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:
432)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:305)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:210)
        at
org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2Container
Filter.java:79)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:243)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:210)
        at
org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployF
ilter.java:71)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:243)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:210)
        at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.
java:749)
        at
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDis
patcher.java:487)
        at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatch
er.java:412)
        at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher
.java:339)
        at
org.seasar.struts.filter.RoutingFilter.forward(RoutingFilter.java:219)
        at
org.seasar.struts.filter.RoutingFilter.doFilter(RoutingFilter.java:99)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:243)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:210)
        at
org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2Container
Filter.java:79)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:243)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:210)
        at
org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployF
ilter.java:71)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:243)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:210)
        at
org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:69)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:243)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:210)
        at
jp.co.ikic.emerson.javaee.ExceptionFilter.doFilter(ExceptionFilter.java:30)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:243)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:210)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:222)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:123)
        at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase
.java:472)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171
)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:118)
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
        at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Proce
ssor.java:1004)
        at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(Abstrac
tProtocol.java:589)
        at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:
312)
        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:11
45)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:6
15)
        at java.lang.Thread.run(Thread.java:722)
Caused by: org.seasar.framework.beans.IllegalPropertyRuntimeException:
[ESSR0059]クラス(jp.co.ikic.gabriel.form.UserMstForm)のプロパティ
(updateTimestamp)の設定に失敗しました。理由はorg.seasar.framework.exception.
ParseRuntimeException: [ESSR0050]解析に失敗しました。理由は
java.text.ParseException: Unparseable date: "2013-04-16 13:27:23.357"
        at
org.seasar.framework.beans.impl.PropertyDescImpl.setValue(PropertyDescImpl.j
ava:279)
        at
org.seasar.struts.action.S2RequestProcessor.setSimpleProperty(S2RequestProce
ssor.java:482)
        at
org.seasar.struts.action.S2RequestProcessor.setProperty(S2RequestProcessor.j
ava:398)
        at
org.seasar.struts.action.S2RequestProcessor.processPopulate(S2RequestProcess
or.java:290)
        ... 47 more
Caused by: org.seasar.framework.exception.ParseRuntimeException: [ESSR0050]
解析に失敗しました。理由はjava.text.ParseException: Unparseable date:
"2013-04-16 13:27:23.357"
        at
org.seasar.framework.util.DateConversionUtil.toDate(DateConversionUtil.java:
97)
        at
org.seasar.framework.util.DateConversionUtil.toDate(DateConversionUtil.java:
80)
        at
org.seasar.framework.util.DateConversionUtil.toDate(DateConversionUtil.java:
62)
        at
org.seasar.framework.util.TimestampConversionUtil.toTimestamp(TimestampConve
rsionUtil.java:57)
        at
org.seasar.framework.util.TimestampConversionUtil.toTimestamp(TimestampConve
rsionUtil.java:43)
        at
org.seasar.framework.beans.impl.PropertyDescImpl.convertDate(PropertyDescImp
l.java:333)
        at
org.seasar.framework.beans.impl.PropertyDescImpl.convertIfNeed(PropertyDescI
mpl.java:307)
        at
org.seasar.framework.beans.impl.PropertyDescImpl.setValue(PropertyDescImpl.j
ava:245)
        ... 50 more
Caused by: java.text.ParseException: Unparseable date: "2013-04-16 13:27:23.
357"
        at java.text.DateFormat.parse(DateFormat.java:357)
        at
org.seasar.framework.util.DateConversionUtil.toDate(DateConversionUtil.java:
95)
        ... 57 more


_______________________________________________
Seasar-user mailing list
Seasar-user @ ml.seasar.org
https://ml.seasar.org/mailman/listinfo/seasar-user


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