javax.servlet.ServletException: org.apache.jasper.JasperException: An exception occurred processing JSP page /goods/goods.jsp at line 100 97:   
98:  <c:if test="${!empty goods}">
99: 
100:   <c:forEach items="${goods}" var="goods">  
101: 
102:    <tr>
acion 方法为:@Resource private GoodsService goodsService;
public String execute() throws Exception {
// TODO Auto-generated method stub List<Goods> goods= goodsService.list();
ActionContext.getContext().put("goods", goodsService.list());
for(Goods g:goods){
System.out.println(g.getGoodsName());
}

return ALL_KEY;
} 在页面中遍历对象集合<c:if test="${!empty goods}">

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

   <tr>
    <td width="3%" height="22" background="../images/tab/bg.gif" bgcolor="#FFFFFF"><div align="center">
              <input type="checkbox" name="checkbox" value="checkbox" />
            </div>
     </td>
    <td height="20" bgcolor="#FFFFFF"><div align="center" class="STYLE1"><span class="STYLE1"><a  href="###"   onclick="javascript:show();">${goods.goodsName}</a> </span></div></td>
    
     <td height="20" bgcolor="#FFFFFF"> <span class="STYLE1">${goods.soruce}</span></td>
     <td height="20" bgcolor="#FFFFFF"><span class="STYLE1">${goods.number} </span></td>
     <td height="20" bgcolor="#FFFFFF"><span class="STYLE1"> ${goods.studentName}</span></td>
     <td height="20" bgcolor="#FFFFFF">
     
     <span class="STYLE1">  
     <fmt:formatDate value="${goods.lendTime}" pattern="yyyy-MM-dd"/>     </c:forEach>
         </c:if>
struts配置文件<package name="daily_settings" namespace="/daily" extends="struts-default">
          <action name="all" class="goodsAction">
         <result name="all">/goods/goods.jsp</result>
          </action>
          <action name="message_*" class="goodsAction" method="{1}">
   <result name="list">/goods/edit_goods.jsp</result> 
   <result name="add" type="redirect">all.action</result> 
   <result name="del" type="chain">all</result>
   <result name="detail">/goods/showview.jsp</result>
  </action>
通过左面菜单按钮链接至 all.action  并获取到数据 转发到 goods.jsp并显示 全部数据 
在这里可以正常显示 可是当我执行添加方法或删除action并重定向至all.action时   页面就可是报错了 因为我没什么实际项目经验 所以搜了半天资料也没找到什么原因 ,忘各位不吝赐教 

解决方案 »

  1.   

    楼主,你用的是struts2,但是你为什么不用struts2自带的循环标签呢。
    <s:iterator value="goods" id="good">
      <s:property value="goodsName"/>
    </s:iterator>
    这样做的前提是:在action中写的goods就得是一个私有属性了。
    就像这样:private List<Goods> goods = new ArrayList<Goods>();
    然后再加上setter getter方法。
    你这样做好像也可以,你可以把ActionContext.getContext().put("goods", goodsService.list());换一下,换成:ServletActionContext.getRequest().setAttribute("goods",goodsService.list());还有把你的<c:forEach items="${goods}" var="goods">  中的var=“goods” 换个值,var=“good”,这样做看看。
      

  2.   

    jsp页面有没有把标签加进来?
      

  3.   

    对不起 ,是我没有把代码贴全 
    像你们所说的方式 我都试过了 好像依旧不可以 !
    @Controller("goodsAction")
    public class GoodsAction implements com.xinyang.util.Constants {
    @Resource private GoodsService goodsService;
    public String execute() throws Exception {
    // TODO Auto-generated method stub List<Goods> goods= goodsService.list();
    ActionContext.getContext().put("goods", goodsService.list());
    for(Goods g:goods){
    System.out.println(g.getGoodsName());
    }

    return ALL_KEY;
    }
    public String add()throws Exception{
    goodsService.saveGoods(goods);
    return ADD_KEY;
    }
    public String del()throws Exception {
    goodsService.deleteGoods(goods.getGoodsId());
    return DEL_KEY;
    }
    private Goods goods;
    public Goods getGoods() {
    return goods;
    }
    public void setGoods(Goods goods) {
    this.goods = goods;
    }

    }这是action代码 
    在页面中我也把标签引进来了
    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%@page import="java.text.SimpleDateFormat"%>
    <%@page import="com.xinyang.bean.Goods"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 
      

  4.   

    LZ,我是真心的建议你, 在struts2的环境下面不要用el表达式.!
    struts2默认的语言是ognl表达式, 要把struts2玩好,这个必须熟练掌握, 否则你就是用struts2的形,不用struts2的神,那么你用struts2不就失去意义了.?
    不掌握ognl用struts2的标签会很吃亏的.!来解答一下你为什么那里会出错了!
    你的变量goods是存在ognl Context中的,  而el表达式,只能访问到OGNL Context的根对象,也就是ValueStack中的属性(这是StrutsRequestWrapper的作用),  <s:property value="#goods">, 访问Ognl Context中的属性要加#滴,所以用el表达式你是访问不到滴.! 知道了吗.?
    如果你要想用el访问,那么 在你的Action中加入 private List<T> goods;并加上set/get方法.
    为什么这样就可以访问呢.? 我刚才说了,el可以访问到ValueStack中对象的属性,在你访问Action的时候,Struts2的核心过滤器会把你的Action压在ValueStack栈顶, 所以这样也能访问到
      

  5.   

    补充一点, Struts2的标签默认是禁止el表达式的哟.!  
      

  6.   

    6# 您能帮我解释下为什么从左面菜单 链接至action中获取数据并在页面中遍历,而页面此时可以正常显示了呢?
      

  7.   

    List<Goods> goods= goodsService.list();
    ActionContext.getContext().put("goods", goodsService.list());
    换一下,换成:ServletActionContext.getRequest().setAttribute("goods",goodsService.list());可以试试!
    jsp c:forEach items="${goods}" var="good">
      

  8.   

    goods 你的显示的bean 要加载在jsp页面里
    <%@ page import="xx.xx.xx.bean"%>