2014-06-25 25 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 &设置方法。