JSF 转换器时间戳

发布于 2024-10-11 09:44:09 字数 605 浏览 6 评论 0原文

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

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

谢谢


更新:

我想保存用户的生日,但我的后端需要时间戳值。我在将它绑定到我的 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 方法吗?)

I want to convert my input into a timestamp value.

I have only found a dateconverter in examples. Are there any best practises?

Thank you


Update:

I want to save a birthday of a user but my backend requires a timestamp value. And I have problems with binding it to my jsf frontend..

Maybe a link to an example would be helful :-)

I tried it as follows:

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

But I get exceptions (strange):

/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

(Is it maybe because of get method?)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

此刻的回忆 2024-10-18 09:44:09

绑定到 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 表示时间戳。仅当您要将 java.util.Date 保留在 TIMESTAMP中时才使用 java.sql.Timestamp数据库的 DATETIME 列。

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

Bind to Date#getTime() instead to get/set the raw timestamp in milliseconds.

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

Or if you want to input/output a human readable date, then just stick to using #{bean.date} and use the standard date converters.

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

In the backend just use Date#getTime() to process the timestamp.


Update: you shouldn't clutter your model with JDBC specific API. The java.util.Date represents the timestamp. Use java.sql.Timestamp only at that point you're about to persist a java.util.Date in a TIMESTAMP or DATETIME column of your DB.

preparedStatement.setTimestamp(index, new Timestamp(bean.getDate().getTime()));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文