使用属性访问jsp上的列表元素

时间:2014-09-27 14:35:59

标签: java spring jsp model-view-controller

我想使用属性而非(索引)编号访问JSP页面中的列表元素。

首先:我在控制器中获得了一个项目列表:

List<Item> items;

第二:我将它作为模型属性发送到我的JSP页面

第三:我通过forEach标记访问列表:

<c:forEach items="${roles}" var="role">

       ${role[1]}

</c:forEach>

如您所见,我使用了列的索引号,但实际上我想使用属性名称:

${role.code}

但是当我这样做时,我得到了一个例外:

java.lang.NumberFormatException: For input string: "code"
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
java.lang.Integer.parseInt(Integer.java:449)
java.lang.Integer.parseInt(Integer.java:499)
javax.el.ArrayELResolver.coerce(ArrayELResolver.java:166)
javax.el.ArrayELResolver.getValue(ArrayELResolver.java:46)
org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104)
org.apache.el.parser.AstValue.getValue(AstValue.java:183)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:1026)
org.apache.jsp.WEB_002dINF.pages.roles.roles_jsp._jspx_meth_c_005fforEach_005f0(roles_jsp.java:559)
org.apache.jsp.WEB_002dINF.pages.roles.roles_jsp._jspService(roles_jsp.java:352)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:209)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:267)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1221)
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1005)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:952)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

这个问题的原因是什么?我如何准备使用属性?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。在我的情况下,我必须使用HQL而不是典型SQL才能将结果转换为真正的Java对象。

我测试了这种方法,它正在运行!