我的 @NamedQuery
中有以下Entity
:
@NamedQuery(name = "Customer.findAll", query = "SELECT c FROM Customer c")
我在DAOImpl
班级中使用上述内容
TypedQuery<Customer> q = entityManager.createNamedQuery(
"Customer.findAll", Customer.class);
当我在应用程序中显示日期字段时,所有日期值都显示为
2013-07-14 00:00:00.0, 2013-07-28 00:00:00.0
等,字符串字段显示为
test.entity.Employee@750d24b2
如何格式化数据库中存储的日期和显示字符串数据?
修改1
<p:column>
<f:facet name="header">
<h:outputText value="Employee #" />
</f:facet>
<h:outputText value="#{req.empNumber}" />
</p:column>
和实体empNumber
中的
声明为
private Employee empNumber;
答案 0 :(得分:2)
如果您接收test.entity.Employee@750d24b2
您没有访问JSF上的String
,而是通过JSF EL访问课程。
您应该访问Employee
类的字段,例如:
<h:outputText value="#{req.employee.empNumber}" />
这假定req
属性包含employee
的get / set方法,employee
包含empNumber
的get / set方法。有了这些访问器,JSF EL应该显示empNumber
。
为了显示日期,我建议使用JSF标签。
<h:outputText value="#{req.someDate}" >
<f:convertDateTime pattern="dd.MM.yyyy HH:mm" />
</h:outputText>
答案 1 :(得分:1)
在JSF中将日期显示为格式化字符串与@NamedQuery无关,或者您选择从数据库中获取该日期。无论如何,要显示格式化日期,
<h:outputText value="#{bean.date}" >
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
替换为实际值和所需模式。
对于Employee,当您使用Object(而不是String)作为h:outputText的值时,将调用该对象的toString()方法。这就是为什么你看到你所看到的。你应该使用员工的财产,比如#{req.employee.empNumber}