我在网上找到个例子, 仿照做. 静态的没有问题. 但动态的就出来问题了. 各位帮忙看看问题怎么解决呢.
Servlet.service() for servlet jsp threw exception
javax.servlet.jsp.JspException: Cannot find bean: "list" in any scope
Action相关代码:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
ModelListForm modelListForm = (ModelListForm) form;
List<Objects> modelList ;
modelList = modelMgr.getAllModelNames();
request.setAttribute("list", modelList);
return mapping.getInputForward();
}
Objects类里面有 id 和 name两个属性. 也有相关的 getter, setter方法.
ActionForm相关代码:
private String select;
public String getSelect() {
return select;
}
public void setSelect(String select) {
this.select = select;
}
JSP相关代码:
/html:select
</html:form>
struts配置文件相关:
attribute="modelListForm"
input="/pages/modelBody.jsp"
name="modelListForm"
path="/modelList"
scope="request"
/>
网上那个例子说, 如果直接在地址栏输入...modelList.do而不是/pages/modelBody.jsp就不会有这个问题. 但我想先读入页面, 然后按submit后, 再读入动态数据. 应该如何解决呢?
[b]问题补充:[/b]
谢谢1L的回复. 但是这个方法是不是只能判断 list属性 是否在当前scope呢? 可我的问题现在报错说,list属性不存在。这个应该如何解决呢?
楼主可以嵌套标签,用logic:present和logic:notPresent,logic:present用于检查request对象传递的参数是否存在,存在则执行标签体的内容,而logic:notPresent则是在logic:present标签检查的对象不存在的时候,执行标签体的内容。你的代码可以这样改:
[code="java"]
/html:select
/logic:present
//不存在时,你要执行的代码
/logic:notPresent[/code]不知道楼主要的是不是这样的效果,希望对楼主有所启发
他是判断这个list属性,对应的Bean是否存在,也就是说,这个代码的效果就是,
[code="java"]request.getAttribute("list");[/code]
如果这个方法返回的是空,他就会执行logic:notPresent里内容。