2014-06-25 24 views
0

我試圖訪問一個像這樣的訪問列表:有例外通過JSTL

enter image description here

我傳遞給JSP頁面

the list through request.setAttribute("list", list); 

,並嘗試訪問

<c:foreach items="${list}" var="element"}> 

<li> ${element.name} ${element.price} </li> 

</c:foreach> 

但我得到NumberFormatException。我如何正確訪問列表?

+0

您的'List'包含Object []對象,而不是'Route'對象。你是如何破壞類型安全的? –

+0

這個問題相當複雜。我會試着更好地解釋它。我通過JPA查詢獲取列表,其中只有表Route的兩列。所以如果我只有兩列,列表不應該是路由元素,而是什麼? –

+0

我認爲,要正確解決問題,我應該按照這個例子http://stackoverflow.com/questions/17202334/jpa-entity-manager-select-many-columns-and-get-result-list-custom-objects –

回答

1

如果您只從表中選擇幾列,JPA將爲返回的每一行返回一個對象數組。即它將返回一個List<Object[]>對象。如果你想取回Route對象的列表,你可以在Route類中編寫一個構造函數,該構造函數接受兩個值(name和pric,並在構造函數中適當地設置值),然後可以像下面那樣在JPA查詢中使用構造函數獲取路由對象: select new yourpackage.Route(name, price) from Route

0

,我們在您JSTL兩個問題:

<c:foreach items="${list}" var="element"}> 
    ... 
</c:foreach> 
  1. c:forEachc:foreach
  2. 有一個額外的} 到底。

它應該是這樣的:

<c:forEach items="${list}" var="element"> 
    ... 
</c:forEach> 

有兩個選項。根據需要嘗試任何一種。

  1. 如果列表中包含Object[]然後使用${element[0]}
  2. 如果列表中包含Route然後使用${element['name']}${element.name}${element.getName()}。確保Route類包含name作爲實例變量與getter &設置方法。