org.apache.jasper.JasperException: Exception in JSP: /game.jsp:3532: <logic:notEmpty name="list">
33: <logic:iterate id="alist" name="list">
34: <tr>
35: <td>${alist.title }</td>
36: <td>${alist.username }</td>
37: <td>${alist.apperDate }</td>
38: </logic:iterate>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:451)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:355)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
com.cui.filter.LanguageFilter.doFilter(LanguageFilter.java:26)
root cause javax.servlet.ServletException: The "." operator was supplied with an index value of type "java.lang.String" to be applied to a List or array, but that value cannot be converted to an integer.
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:841)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:774)
org.apache.jsp.game_jsp._jspService(game_jsp.java:214)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
com.cui.filter.LanguageFilter.doFilter(LanguageFilter.java:26)
root cause javax.servlet.jsp.el.ELException: The "." operator was supplied with an index value of type "java.lang.String" to be applied to a List or array, but that value cannot be converted to an integer.
org.apache.commons.el.Logger.logError(Logger.java:481)
org.apache.commons.el.Logger.logError(Logger.java:498)
org.apache.commons.el.Logger.logError(Logger.java:566)
org.apache.commons.el.ArraySuffix.evaluate(ArraySuffix.java:227)
org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145)
org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:263)
org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:190)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:924)
org.apache.jsp.game_jsp._jspService(game_jsp.java:134)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
com.cui.filter.LanguageFilter.doFilter(LanguageFilter.java:26)这是什么意思,好象是说我标签用错了?没错啊,在这以前我也是这么用的,为什么到这个页面时,报错呢.<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html locale="true">
<head>
<html:base />
<title>游戏|天堂</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head>
<body>
<a href="apper.jsp">发表新主题</a>
<%-- 遍历数据 --%>
<table border="1">
<tr>
<th>主题</th><th>作者</th><th>发表时间</th>
<logic:notEmpty name="list">
<logic:iterate id="alist" name="list">
<tr>
<td>${alist.title }</td>
<td>${alist.username }</td>
<td>${alist.apperDate }</td>
</logic:iterate>
</logic:notEmpty>
</table>
<br>
<%-- 分页 --%>
<center> <a href="page.do?pageNo=1&schema=Article">第一页</a>|
<a href="page.do?pageNo=${requestScope.pageNo-1}&schema=Article">上一页</a>|
<a href="page.do?pageNo=${requestScope.pageNo+1 }&schema=Article">下一页</a>|
<a href="page.do?pageNo=${requestScope.totalPage}&schema=Article">最后一页</a>
<form action="page.do">
<input type="text" name="pageNo" value="${requestScope.pageNo }">
<input type="hidden" name="schema" value="Article" />
<input type="submit" value="go">
</form>共${requestScope.totalPage }页
</center>
</body>
</html:html>
上面这个是jsp文件,由action类跳转到此页面,对结果进行分页
action类可以运行完,到这就出错了,这个分页的list是我在action类做了个连接查询得到的,以前对单独一个表查询不出错,
做了个连接查询就报错了,还报的是EL异常,我实在找不到有什么不对的地方啊,郁闷死拉.
33: <logic:iterate id="alist" name="list">
34: <tr>
35: <td>${alist.title }</td>
36: <td>${alist.username }</td>
37: <td>${alist.apperDate }</td>
38: </logic:iterate>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:451)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:355)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
com.cui.filter.LanguageFilter.doFilter(LanguageFilter.java:26)
root cause javax.servlet.ServletException: The "." operator was supplied with an index value of type "java.lang.String" to be applied to a List or array, but that value cannot be converted to an integer.
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:841)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:774)
org.apache.jsp.game_jsp._jspService(game_jsp.java:214)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
com.cui.filter.LanguageFilter.doFilter(LanguageFilter.java:26)
root cause javax.servlet.jsp.el.ELException: The "." operator was supplied with an index value of type "java.lang.String" to be applied to a List or array, but that value cannot be converted to an integer.
org.apache.commons.el.Logger.logError(Logger.java:481)
org.apache.commons.el.Logger.logError(Logger.java:498)
org.apache.commons.el.Logger.logError(Logger.java:566)
org.apache.commons.el.ArraySuffix.evaluate(ArraySuffix.java:227)
org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145)
org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:263)
org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:190)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:924)
org.apache.jsp.game_jsp._jspService(game_jsp.java:134)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
com.cui.filter.LanguageFilter.doFilter(LanguageFilter.java:26)这是什么意思,好象是说我标签用错了?没错啊,在这以前我也是这么用的,为什么到这个页面时,报错呢.<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html locale="true">
<head>
<html:base />
<title>游戏|天堂</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head>
<body>
<a href="apper.jsp">发表新主题</a>
<%-- 遍历数据 --%>
<table border="1">
<tr>
<th>主题</th><th>作者</th><th>发表时间</th>
<logic:notEmpty name="list">
<logic:iterate id="alist" name="list">
<tr>
<td>${alist.title }</td>
<td>${alist.username }</td>
<td>${alist.apperDate }</td>
</logic:iterate>
</logic:notEmpty>
</table>
<br>
<%-- 分页 --%>
<center> <a href="page.do?pageNo=1&schema=Article">第一页</a>|
<a href="page.do?pageNo=${requestScope.pageNo-1}&schema=Article">上一页</a>|
<a href="page.do?pageNo=${requestScope.pageNo+1 }&schema=Article">下一页</a>|
<a href="page.do?pageNo=${requestScope.totalPage}&schema=Article">最后一页</a>
<form action="page.do">
<input type="text" name="pageNo" value="${requestScope.pageNo }">
<input type="hidden" name="schema" value="Article" />
<input type="submit" value="go">
</form>共${requestScope.totalPage }页
</center>
</body>
</html:html>
上面这个是jsp文件,由action类跳转到此页面,对结果进行分页
action类可以运行完,到这就出错了,这个分页的list是我在action类做了个连接查询得到的,以前对单独一个表查询不出错,
做了个连接查询就报错了,还报的是EL异常,我实在找不到有什么不对的地方啊,郁闷死拉.
看看是否能取出值。
假设这样写:(没有对list循环,为了省时)
<% List list=(List)request.getAttribute("list");
list.get(0);
%>
那这个时候返回的对象是什么类型呢?user 或者article或者??
如果这样做循环的话我怎么取出他们的属性值呢?
你返回的是一个Object 数组。
所以 ${alist.title } 这样的写法行不通。
改进方案
1,不改数据查询的情况下。在页面上 二次 循环。
2,将连接查询的结果集重新封装成一个对象。
假设 有 表 T1 ,T2 表T2中有 关联到T1 t1(id主键)的外键 t2_id 。 取 连接后的 T1,T2中的一些字段封装成一个实体类。并有一个默认构造方法和一个包含 你取出的所有字段的一个构造方法。Temp 类。
hql= "select new Temp(t1.a,t1.b...,t2.x,t2.y...) from T1 t1 ,T2 t2 where t1.id=t2.t2_id"如果是jdbc就循环出来一个个给就是啦。