0

@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;
4

2 回答 2

2

如果您收到test.entity.Employee@750d24b2的不是String在 JSF 上访问,而是通过 JSF EL 访问一个类。

您应该访问Employee类上的一个字段,例如:

<h:outputText value="#{req.employee.empNumber}" />

这假定该req属性包含 的 get/set 方法employeeemployee包含 的 get/set 方法empNumber。有了这些访问器,JSF EL 应该会显示empNumber.

为了显示日期,我建议使用 JSF 标签。

<h:outputText value="#{req.someDate}" >
              <f:convertDateTime pattern="dd.MM.yyyy HH:mm" />
 </h:outputText>

文档

于 2013-07-26T16:01:08.623 回答
1

在 JSF 中将日期显示为格式化字符串与 @NamedQuery 无关,或者您选择从数据库中获取该日期。无论如何,要显示格式化的日期,

<h:outputText value="#{bean.date}" >
    <f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>

替换为实际值和所需模式。

至于 Employee,当您使用 Object(而不是 String)作为 ah:outputText 的值时,会调用该对象的 toString() 方法。这就是为什么你看到你所看到的。您应该使用员工的属性,例如 #{req.employee.empNumber}

于 2013-07-26T16:05:07.857 回答