【发布时间】:2015-03-17 08:26:47
【问题描述】:
如何在 PrimeFaces <p:calendar> 这样的 JSF 日期组件中使用类型为 java.sql.Timestamp 的模型属性?该组件需要一个java.util.Date 的实例作为其输入,并且它还将返回相同类型的java.util.Date。
是否可以为这种情况创建转换器?如何实现转换器以将java.sql.Timestamp 转换为java.util.Date?我想我需要一个带有getAsObject() 和getAsString() 的JSF 转换器,但我不知道应该在哪里进行转换?
实际上,在这种情况下,我有一个 List<Model> 要显示在 <p:dataTable> 中。在每一行中,我可以直接从表中设置 startDate 和 endDate。所以我需要在save()过程中直接使用model属性从表中获取最新/更新的数据。
这是我的模型的示例:
public class Model {
private Timestamp startDate;
private Timestamp endDate;
public Timestamp getStartDate() {
return startDate;
}
public void setStartDate(Timestamp startDate) {
this.startDate = startDate;
}
public Timestamp getEndDate() {
return endDate;
}
public void setEndDate(Timestamp endDate) {
this.endDate = endDate;
}
}
这是我的 bean 的示例:
public class PageBean {
private List<Model> listModel;
public String save() {
// Process insert / update listModel to database here
return "next-page"
}
public List<Model> getListModel() {
return listModel;
}
public void setListModel(List<Model> listModel) {
this.listModel = listModel;
}
}
这是我的 xhtml 的示例:
<p:dataTable value="#{pageBean.listModel}" var="model" >
<p:column headerText="Start Date">
<p:calendar value="#{model.startDate}" pattern="dd-MMM-yyyy" ></p:calendar>
</p:column>
<p:column headerText="End Date">
<p:calendar value="#{model.endDate}" pattern="dd-MMM-yyyy" ></p:calendar>
</p:column>
</p:dataTable>
<p:commandButton value="Save" action="#{pageBean.save()}" ajax="false" />
如果模型属性类型是java.util.Date,我认为直接使用模型是可以的,但是我这里的类型是java.sql.Timestamp。
【问题讨论】:
-
你使用jpa框架吗?如果是这样,只需声明 java.util.date 的字段
-
是的,但我无法将属性类型更改为
java.util.Date,因为所有都已生成。
标签: java jsf jdbc timestamp converter