问题描述
org.apache.jasper.JasperException: An exception occurred processing JSP page /forum/index.jsp at line 7673: <tr class="tr3" id="fid_96">74: <th width="78" style="text-align:right"><img src="images/old.gif"/></th>75: <th width="510" class="old">76: <h2 class="forumT"><a href="#"></a>${board.bname} </h2>77: <p>78: <a href="#"></a> 79: </p>Stacktrace:org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:515)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:426)org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)javax.servlet.http.HttpServlet.service(HttpServlet.java:803)root causejavax.el.PropertyNotFoundException: Property 'bname' not found on type java.lang.Stringjavax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:193)javax.el.BeanELResolver.property(BeanELResolver.java:267)javax.el.BeanELResolver.getValue(BeanELResolver.java:60)javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)org.apache.el.parser.AstValue.getValue(AstValue.java:97)org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:928)org.apache.jsp.forum.index_jsp._jspx_meth_c_005fforEach_005f1(index_jsp.java:502)org.apache.jsp.forum.index_jsp._jspx_meth_c_005fforEach_005f0(index_jsp.java:392)org.apache.jsp.forum.index_jsp._jspService(index_jsp.java:159)org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)javax.servlet.http.HttpServlet.service(HttpServlet.java:803)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384)org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)javax.servlet.http.HttpServlet.service(HttpServlet.java:803)javabean规范那get set不能大写 我类里面属性都是写的小写 get set是eclipse自动生成的 public class Board {/** * 板块编号 自动增长 */private int bid;/** * 板块名称 */private String bname;/** * 返回板块名称 * @return 版块名称 */public String getBname() {return bname;}/** * 设置板块名称 * @param bname 板块名称 */public void setBname(String bname) {this.bname = bname;}我弄了一晚上实在是没辙了 我直接打印${board}能够看到这个ArrayList集合里面有值 为什么就是不出来啊 下面是jsp代码提示出错的地方 <c:forEach items="${initallarea}" var="area"> <!-- 以下是区域信息 --><div class="h"><h3 class="cateT"><a></a></h3>${area.aname}</div><!-- 区域信息结束 --><div><table style="table-layout: fixed; line-height:1.6;" width="100%" border="0"><tbody id="cate_95" style="display:;"><c:set var="board"><mytag:BoardByAreaidTag aid="${area.aid}"></mytag:BoardByAreaidTag></c:set><c:forEach items="${board}" var="board"><!-- 以下是板块信息 --> <tr class="tr3" id="fid_96"> <th width="78" style="text-align:right"><img src="images/old.gif"/></th> <th width="510" class="old"> <h2 class="forumT"><a href="#"></a>${board.bname} </h2> <p> <a href="#"></a> </p> </th> <td width="128" align="center" class="num tac" style="width: 120px;"><em></em>/</td> <td width="229" class="re"> <p><a href="#">Re:还有没人回复哦!..</a></p> <p class="fNum"><a href="#"></a></p> </td> </tr><!-- 板块信息结束 --></c:forEach></tbody></table> </div></c:forEach> 问题补充:androideoe 写道
解决方案
<c:set var="board"> 和 <c:forEach items="${board}" var="board"> 两个地方重复了, 它取的是<c:set var="board">的值, 而不是<c:forEach items="${board}" var="board">里的对象
解决方案二:
检查一下bname的类型 报的是String类型的'bname' 没找到。也有可能是tomcat的问题,建议进入tomcat目录下workCatalinalocalhost这个下面删除你的项目,然后进入webapps也删除你的项目 然后重新编译 部署。一般都是这个问题了 没有编译正确。
解决方案三:
<c:forEach items="${board}" var="board"> 两个都是board,能不能换个名字
解决方案四:
迭代参数的名称不要和集合一样
解决方案五:
你debug一下啊或者看你打印出来的属性名称是怎么写的。这些属性名你debug时候在list里面都可以看到他的属性怎么写的,你按照那个写就可以了。
解决方案六:
你用的hibernat吗,你看看你对应的xml文件里面的属性,名称是否规范。