各位大哥帮忙看一下问题在哪程序目的:jsp中接收Action的赋值。相关代码如下:1.AreaAction.java中赋值
Collection coll = new ArrayList();
coll = db.select(..);
if (coll == null || coll.isEmpty())
{return actionMapping.findForward("fail");
}else{
request.setAttribute("Area", coll);
return actionMapping.findForward("success");
}2.jsp4.jsp中获取 Area的值
<logic:iterate id="area" name="Area" type="com.cargo1.model.Area" scope="request">
<tr valign="top" bgcolor="#FFFFFF">
<td height="20" align="center" bgcolor="#FFFFFF"><bean:write name="area" property="name" filter="true"/></td>
<td height="20" align="center" bgcolor="#FFFFFF"><bean:write name="area" property="resume" filter="true"/></td>
</tr>
</logic:iterate>3.struts-config.xml配置action-mapping<action-mappings type="org.apache.struts.action.ActionMapping">
<action path="/areaAction" type="com.cargo1.control.AreaAction" validate="false" scope="request">
<forward name="success" path="/jsp4.jsp" redirect="true" />
</action><action path="/areaAction" type="com.cargo1.control.AreaAction" validate="false">
<forward name="fail" path="/jsp1.jsp" redirect="true" />
</action>
</action-mappings>问题:运行jsp4.jsp时从request中找不到Area,错误提示如下:
“javax.servlet.ServletException: Cannot find bean Area in scope null”那位大哥帮帮忙给小弟解释一下,万分感谢

解决方案 »

  1.   

    request.setAttribute("Area", coll);
    coll类型为Collection <logic:iterate id="area" name="Area" type="com.cargo1.model.Area" scope="request">
    接收的类型为:com.cargo1.model.Area
      

  2.   

    你的struts-config.xml中的action中没有配对应的form名,看是不是和这个有关
      

  3.   

    个人觉得先把request中的coll提取出来
      

  4.   

    “你的struts-config.xml中的action中没有配对应的form名,看是不是和这个有关”
    不是这个原因啊,请再帮忙想想办法。
      

  5.   

    <logic:iterate id="area" name="Area" type="com.cargo1.model.Area" scope="request">type 和 scope 都不要
      

  6.   

    运行jsp4.jsp        你直接运行这个页???
    运行action.do才会跳转到这啊。
      

  7.   

    我是运行action.do跳转到这啊。
      

  8.   

    一定要通过 action 再 show 页面,struts 标签不会处理null,如果集合内容为空的话也会报
    “javax.servlet.ServletException: Cannot find bean Area in scope null”页面用 equal 或 present 标签加个判断
      

  9.   

    <forward name="success" path="/jsp4.jsp" redirect="true" />你用了 redirect="true" 重定向request 范围内的数据是丢失的
      

  10.   

    首先是:AreaAction中form中你用了areaAction
          名是要对应的.java是分大小写的.
    然后你:request.setAttribute("Area", coll);
    之后又没在页面中把它取出来:
           String Area = (String) request.getAttribute("Area");
    所以在页面中没有这个变量的存在,所以取不到值.
      

  11.   

    ACTION里的Collection能得到,我把redirect="true"删掉也是这个错啊,它就是传到show页面时出现了问题。。
      

  12.   

    不能用这个啊String Area = (String) request.getAttribute("Area");因为它是一个对象啊
      

  13.   

    request.setAttribute("Area", coll);<logic:iterate id="area" name="Area" >
    <tr valign="top" bgcolor="#FFFFFF">
    <td height="20" align="center" bgcolor="#FFFFFF"><bean:write name="area" property="name" filter="true"/></td>
    <td height="20" align="center" bgcolor="#FFFFFF"><bean:write name="area" property="resume" filter="true"/></td>
    </tr>
    </logic:iterate>
    <action path="/areaAction" type="com.cargo1.control.AreaAction" validate="false" scope="request">
    <forward name="success" path="/jsp4.jsp" />
    </action><action path="/areaAction" type="com.cargo1.control.AreaAction" validate="false">
    <forward name="fail" path="/jsp1.jsp" />
    </action>
      

  14.   

    request.setAttribute("Area", coll);<logic:iterate id="area" name="Area" >
    <tr valign="top" bgcolor="#FFFFFF">
    <td height="20" align="center" bgcolor="#FFFFFF"><bean:write name="area" property="name" filter="true"/></td>
    <td height="20" align="center" bgcolor="#FFFFFF"><bean:write name="area" property="resume" filter="true"/></td>
    </tr>
    </logic:iterate>
    <action path="/areaAction" type="com.cargo1.control.AreaAction" validate="false" scope="request">
    <forward name="success" path="/jsp4.jsp" />
    </action><action path="/areaAction" type="com.cargo1.control.AreaAction" validate="false">
    <forward name="fail" path="/jsp1.jsp" />
    </action>
    这样也不行啊
      

  15.   

    Collection coll = new ArrayList();
    coll = db.select(..);
    if (coll == null || coll.isEmpty())
    {return actionMapping.findForward("fail");
    }else{
    request.setAttribute("Area", coll);
    return actionMapping.findForward("success");
    }2.jsp4.jsp中获取 Area的值
    <logic:iterate id="area" name="Area" scope="request">
    <tr valign="top" bgcolor="#FFFFFF">
    <td height="20" align="center" bgcolor="#FFFFFF"><bean:write name="area" property="name" /></td>
    <td height="20" align="center" bgcolor="#FFFFFF"><bean:write name="area" property="resume" /></td>
    </tr>
    </logic:iterate>3.struts-config.xml配置action-mapping<action-mappings type="org.apache.struts.action.ActionMapping">
    <action path="/areaAction" type="com.cargo1.control.AreaAction" validate="false" scope="request">
    <forward name="success" path="/jsp4.jsp" />
    </action><action path="/areaAction" type="com.cargo1.control.AreaAction" validate="false">
    <forward name="fail" path="/jsp1.jsp" />
    </action>
    </action-mappings>
    你这么改
      

  16.   

    name="Area" type="com.cargo1.model.Area"?
    coll里面装的是Area对象?
      

  17.   

    会不会是定向到“success”的时候丢失了数据?
      

  18.   

    有可能的,因为在show页面里request.getAttribute("Area");已经为空了。
      

  19.   

    我觉得大概是
    redirect="true"
    改为false应该就可以了