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时 页面就可是报错了 因为我没什么实际项目经验 所以搜了半天资料也没找到什么原因 ,忘各位不吝赐教
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时 页面就可是报错了 因为我没什么实际项目经验 所以搜了半天资料也没找到什么原因 ,忘各位不吝赐教
解决方案 »
- No bean named 'companyService' is defined
- 这个应用的事务该如何控制?
- 我在web-xml中写有mapping,但报错说没有,运行没成功。
- hibernate many-to-many list 中 index问题?
- 如何为filter-mapping中的/*设置例外
- axis2开发Web Service中整合hibernate的问题
- 求正则表达式
- 请教,如何在Tomcat配置互联网的连接?
- 我想在 EJB 的 CMP 中找出在一个时间段内的数据,EJB QL 怎么写呀
- Hibernate3.3 Oracle10g HQL 查询使用 regexp_like 函数时不支持 在Dialect注册了之后也不行
- Weblogic10 部署项目后启动报java.lang.NoClassDefFoundError: org/apache/commons/digester/D
- 关于定时任务的问题
<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”,这样做看看。
像你们所说的方式 我都试过了 好像依旧不可以 !
@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" %>
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栈顶, 所以这样也能访问到
ActionContext.getContext().put("goods", goodsService.list());
换一下,换成:ServletActionContext.getRequest().setAttribute("goods",goodsService.list());可以试试!
jsp c:forEach items="${goods}" var="good">
顶
<%@ page import="xx.xx.xx.bean"%>