[Struts]"Cannot find bean in any scope"之一解

问题描述

今天在开发中遇到一奇怪问题,有一个action,在该action里使用request.setAttribute()方法将一个List类型对象放在request中,然后forward到一个jsp文件,该文件的主要内容是使用<logic:iterate>标签将这个List对象中的条目列表显示。与它同样逻辑但位于另一模块(teacher)中的代码执行正常。但这个模块(xxgl)中的代码,本来很简单的逻辑,却总是提示:

None.gif org.apache.jasper.JasperException: Cannot find bean t  in  any scope 
None.gifat org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:
254
None.gifat org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:
295
None.gifat org.apache.jasper.servlet.JspServlet.service(JspServlet.java:
241
None.gifat javax.servlet.http.HttpServlet.service(HttpServlet.java:
853
None.gifat org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:
684
None.gifat org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:
432
None.gifat org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:
356
None.gifat org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:
1069
None.gifat org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:
455
None.gifat org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:
279
None.gifat org.apache.struts.action.ActionServlet.process(ActionServlet.java:
1482
None.gifat org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:
507
None.gifat javax.servlet.http.HttpServlet.service(HttpServlet.java:
740
None.gifat javax.servlet.http.HttpServlet.service(HttpServlet.java:
853
None.gifat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
247
None.gifat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
193
None.gifat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
256
None.gifat org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:
643
None.gifat org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
480
None.gifat org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:
995
None.gifat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
191
None.gifat org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:
643
None.gifat org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
480
None.gifat org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:
995
None.gifat org.apache.catalina.core.StandardContext.invoke(StandardContext.java:
2417
None.gifat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
180
None.gifat org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:
643
None.gifat org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:
171
None.gifat org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:
641
None.gifat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
172
None.gifat org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:
641
None.gifat org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
480
None.gifat org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:
995
None.gifat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
174
None.gifat org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:
643
None.gifat org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
480
None.gifat org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:
995
None.gifat org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:
193
None.gifat org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
781
None.gifat org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:
549
None.gifat org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:
589
None.gifat org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:
666
None.gifat java.lang.Thread.run(Unknown Source) 
None.gif

将<logic:iterate>之间的代码去掉后就不会提示错误了,所以怀疑是<bean:write>中的代码有错误。相关文件ListSfzxJbxxAction.java中的execute方法如下:

None.gif public ActionForward execute( 
None.gif   ActionMapping mapping, 
None.gif   ActionForm form, 
None.gif   HttpServletRequest request, 
None.gif   HttpServletResponse response) 
None.gif   throws Exception { 
None.gif
None.gif   HibernateDAO dao 
=  HibernateDAO.getInstance(getServlet().getServletContext()); 
None.gif   List sfzxjbxxs 
=  dao.find( " from  "   +  SfzxJbxx.class.getName()); 
None.gif   SfzxJbxx tmp 
=   new  SfzxJbxx(); 
None.gif   tmp.setSfzxid(
" id " ); 
None.gif   tmp.setXxdm(
" pku " ); 
None.gif   sfzxjbxxs.add(tmp); 
None.gif   request.setAttribute(
" sfzxjbxxs " , sfzxjbxxs); 
None.gif   
return  mapping.findForward( " success " ); 
None.gif
None.gif

listsfzxjbxx.jsp内容如下:

ExpandedBlockStart.gif ContractedBlock.gif <% dot.gif @ page contentType="text/html;charset=UTF-8" language="java"  %>  
ExpandedBlockStart.gifContractedBlock.gif
<% dot.gif @ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>  
ExpandedBlockStart.gifContractedBlock.gif
<% dot.gif @ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>  
None.gif
< head >  
None.gif      
< title > SfzxJbxxList </ title >  
None.gif
</ head >  
None.gif
< body >  
None.gif
< logic:iterate   name ="sfzxjbxxs"  id ="sfzxjbxx" >  
None.gif  
< tr >  
None.gif    
< td  align ="left" >  
None.gif      
< bean:write  name ="sfzxjbxx"  property ="sfzxId"  filter ="true" />  
None.gif    
</ td >  
None.gif    
< td  align ="left" >  
None.gif      
< bean:write  name ="sfzxjbxx"  property ="xxdm"  filter ="true" />  
None.gif    
</ td >  
None.gif    
< td >  
None.gif    
</ td >  
None.gif  
</ tr >  
None.gif
</ logic:iterate >  
None.gif
< body >  
None.gif
</ html >  
None.gif

模块配置文件中相关内容如下:

None.gif < action-mappings >  
None.gif    
< action 
None.gif        
attribute ="Form"  
None.gif        input
="/form/sfzxjbxx.jsp"  
None.gif        name
="sfzxJbxxForm"  
None.gif        path
="/saveSfzxJbxx"  
None.gif        type
="edu.pku.cc.sfzx.xxgl.action.SaveSfzxJbxxAction"   />  
None.gif    
< action     path ="/listsfzxjbxx"  type ="edu.pku.cc.sfzx.xxgl.action.ListSfzxJbxxAction" >  
None.gif        
< forward  name ="success"               path ="/form/listsfzxjbxx.jsp" />  
None.gif    
</ action >  
None.gif          
None.gif
</ action-mappings >  
None.gif

问题解决

经过三个小时的检查,发现是listsfzxjbxx.jsp里缺少<logic:iterate>标签的声明,在前面增加上:

None.gif < %@ taglib  uri ="/WEB-INF/struts-logic.tld"  prefix ="logic" % >  

一切OK!

转载于:https://www.cnblogs.com/bjzhanghao/archive/2004/07/28/28065.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值