【问题标题】:JSF Converter TimestampJSF 转换器时间戳
【发布时间】:2011-06-06 01:49:51
【问题描述】:

我想将我的输入转换为时间戳值。

我只在示例中找到了一个日期转换器。有没有最佳实践?

谢谢


更新:

我想保存用户的生日,但我的后端需要时间戳值。而且我在将它绑定到我的 jsf 前端时遇到问题..

也许一个例子的链接会有帮助:-)

我试过如下:

public void setBday(Date bday) {
            member.setBirthday(new Timestamp(bday.getTime()));
        }
        public Timestamp getBday() {
            return member.getBirthday();
        }

但我得到了例外(奇怪):

/createMember.xhtml @34,54 value="#{member.bday}": Cannot convert 13.01.83 01:00 of type class java.util.Date to class java.sql.Timestamp

(可能是get方法的原因?)

【问题讨论】:

    标签: jsf timestamp jsf-2 converter


    【解决方案1】:

    绑定到Date#getTime() 以获取/设置原始时间戳(以毫秒为单位)。

    <h:inputText value="#{bean.date.time}" />
    

    或者,如果您想输入/输出人类可读的日期,那么只需坚持使用#{bean.date} 并使用标准日期转换器。

    <h:inputText value="#{bean.date}">
        <f:convertDateTime type="date" dateType="short" />
    </h:inputText>
    

    在后端只需使用Date#getTime() 来处理时间戳。


    更新:你不应该用 JDBC 特定的 API 弄乱你的模型。 java.util.Date 代表时间戳。仅在您即将在数据库的TIMESTAMPDATETIME 列中持久化java.util.Date 时使用java.sql.Timestamp

    preparedStatement.setTimestamp(index, new Timestamp(bean.getDate().getTime()));
    

    【讨论】:

    • 我真的不明白你的建议:-/ 请看我编辑的问题
    • 我没想到你在你的模型中使用了java.sql.Timestamp。查看答案更新。
    • 但是如果你被底层 API 强制使用 Timestamp 怎么办,比如 jBPM:community.jboss.org/thread/162961
    猜你喜欢
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    • 2011-07-07
    • 2012-12-14
    相关资源
    最近更新 更多