xddeep
2008-09-18 02:26 阅读 163
已采纳

关于struts中html:select 出现Cannot find bean: "list" in

我在网上找到个例子, 仿照做. 静态的没有问题. 但动态的就出来问题了. 各位帮忙看看问题怎么解决呢.

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属性不存在。这个应该如何解决呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    iteye_18036 iteye_18036 2008-09-18 08:04

    楼主可以嵌套标签,用logic:presentlogic:notPresentlogic:present用于检查request对象传递的参数是否存在,存在则执行标签体的内容,而logic:notPresent则是在logic:present标签检查的对象不存在的时候,执行标签体的内容。你的代码可以这样改:
    [code="java"]




    /html:select
    /logic:present


    //不存在时,你要执行的代码
    /logic:notPresent[/code]不知道楼主要的是不是这样的效果,希望对楼主有所启发

    点赞 评论 复制链接分享
  • iteye_18036 iteye_18036 2008-09-18 16:59

    他是判断这个list属性,对应的Bean是否存在,也就是说,这个代码的效果就是,
    [code="java"]request.getAttribute("list");[/code]
    如果这个方法返回的是空,他就会执行logic:notPresent里内容。

    点赞 评论 复制链接分享

相关推荐