将JPQL定制查询结果呈现到JSF页面中 [英] Issue rendering JPQL custom query results into a JSF page
问题描述
我有一个具有以下命名查询的实体:
I have an entity with the following named query:
@NamedQuery(name = "findAllGarbage", query = "SELECT g.filename, g.description, g.uploadDate FROM Garbage g;")
问题是我想将该结果传递给dataTable进行呈现,并且我收到NumberFormatException.我不明白为什么,因为那里没有数字.
The problem is that i want to pass that result to a dataTable to render, and i recieve NumberFormatException. I dont understand why because there are no numbers anywhere.
程序其余部分的外观如下:
This is how the rest of the program looks like:
-执行查询的EJB
@Stateless(name = "ejbs/SearchEJB")
public class SearchEJB implements ISearchEJB {
@PersistenceContext
private EntityManager em;
public List<Garbage> findAllGarbage() {
Query query = em.createNamedQuery("findAllGarbage");
List<Garbage> tmpGarbage = query.getResultList();
return tmpGarbage;
}
-显示表数据的JSF部分:
-The part of the JSF that displays the tableData:
<p:dataTable var="garbage" value="#{resultsController.allGarbage}" paginator="true" rows="10"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15">
<p:column>
<f:facet name="header">
<h:outputText value="Filename" />
</f:facet>
<h:outputText value="#{garbage.filename}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Description" />
</f:facet>
<h:outputText value="#{garbage.description}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Upload date" />
</f:facet>
<h:outputText value="#{garbage.uploadDate}" />
</p:column>
</p:dataTable>
-与JSF页面交互的托管bean:
-The managed bean that interacts with the JSF page:
@ManagedBean
@RequestScoped
public class ResultsController {
@EJB
private ISearchEJB searchEJB;
private Garbage garbage;
public List<Garbage> getAllGarbage() {
return searchEJB.findAllGarbage();
}
public Garbage getGarbage() {
return garbage;
}
public void setGarbage(Garbage garbage) {
this.garbage = garbage;
}
错误提示:
警告:StandardWrapperValve [Faces Servlet]:PWC1406:Servlet Faces Servlet的Servlet.service()引发异常 java.lang.NumberFormatException:对于输入字符串:文件名"
WARNING: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception java.lang.NumberFormatException: For input string: "filename"
我不明白文件名出了什么问题.
I dont understand what is wrong with the file name.
------------------------------------ UPDATE ---------- --------------------------
------------------------------------UPDATE------------------------------------
我将JSF更改为此,现在我看不到错误.我看到表格数据,但为空:
I changed the JSF to this, and now i dont see the error. I see tha table data but empty:
<p:dataTable var="garbage" value="#{resultsController.allGarbage}" paginator="true" rows="10"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15">
<p:column>
<f:facet name="header">
<h:outputText value="Filename" />
</f:facet>
<h:outputText value="#{garbage[4]}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Description" />
</f:facet>
<h:outputText value="#{garbage[3]}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Upload date" />
</f:facet>
<h:outputText value="#{garbage[6]}" />
</p:column>
</p:dataTable>
推荐答案
问题是由于诸如
SELECT g.filename, g.description, g.uploadDate FROM Garbage
以文件名,描述和uploadDate作为其元素返回Object[]
.
returns an Object[]
with filename, description and uploadDate as its elements.
如果要作为对象属性访问它们(如在JSF中一样),则需要查询完整的对象:
If you want to access them as object properties (as you do in JSF), you need to query for the full object instead:
SELECT g FROM Garbage g
这篇关于将JPQL定制查询结果呈现到JSF页面中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!