我有以下命名查詢實體:問題渲染JPQL自定義查詢結果爲JSF頁面
@NamedQuery(name = "findAllGarbage", query = "SELECT g.filename, g.description, g.uploadDate FROM Garbage g;")
的問題是,我想這個結果傳遞給一個DataTable渲染,我收到NumberFormatException的。我不明白爲什麼,因爲沒有任何數字。
這是程序的其餘部分的樣子:
-The 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部分顯示的資料表:
<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:
@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 [面孔的Servlet]:PWC1406:Servlet.service()爲servlet的面孔的Servlet拋出異常 java.lang.NumberFormatException:對於輸入字符串: 「文件名」
我不明白文件名有什麼問題。
------------------------------------ UPDATE --------- ---------------------------
我改變了JSF到這個,現在我沒有看到錯誤。我看到塔表數據,但空白:
<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>
這是不是一種選擇,因爲它也將retrive文件本身。這會降低性能。每個文件可以是幾兆字節。我需要以某種方式從查詢中排除一個稱爲文件的類型爲byte [] – sfrj 2011-03-28 14:39:52
@sfrj的變量:然後,您需要在視圖中使用數組索引而不是字段名稱(我不確定它在JSF中的工作方式)。 – axtavt 2011-03-28 14:40:49
我的想法是嘗試去做你所說的:SELECT g FROM Garbage g並嘗試添加諸如gCEfile之外的東西但是那沒有奏效。我不知道haw數組索引的工作原理。有沒有其他的選擇?我只需要沒有屬性文件的垃圾對象。 – sfrj 2011-03-28 14:46:26