一个很奇怪问题,折腾一天了

阅读更多

今天改装一个无级树型菜单,用spring来管理事务,ssh架构的,其中struts的Action代码如下:首先做了一个BaseAction用来读取spring配置文件的bean定义

java 代码
  1. public class BaseAction extends Action {   
  2.          protected final Log log = LogFactory.getLog(getClass());   
  3.          private static final Long defaultLong = null;   
  4.          public ApplicationContext applicationContext;    
  5.   
  6.         public Object getBean(String name) {   
  7.             ApplicationContext ctx =    
  8.               WebApplicationContextUtils.getRequiredWebApplicationContext(servlet.getServletContext());   
  9.          return ctx.getBean(name);  

然后是处理控制的MenuManageAction extends BaseAction,选取其中的一段代码来看;

java 代码
  1.   }else if (todoaction==null || "".equals(todoaction) || "list".equals(todoaction)){   
  2. reeManager  treeManager=(TreeManager)getBean("treeManager");   
  3. list=treeManager.getRoots(SystemMenu.class);   
  4. equest.setAttribute("objectlist",list);   
  5.            return mapping.findForward("list");      

问题就出在这,TreeManager  treeManager=(TreeManager)getBean("treeManager");居然 出现了ClassCastException!!!!!!!!!!!!!!!!!!!   getBean方法虽然返回的是Object类型的但其实是个TreeManager类型的(见下面的配置文件),但就是一转型为TreeManager就得到ClassCastException,如果不转型得到的是Object类型的,但是就不能调用getRoot方法了,为了得到大家的帮助,我把其它相关代码也贴出来,spring配置文件如下:

xml 代码
  1. <bean id="treeManager" class="org.news.service.TreeManager">  
  2.         <property name="sessionFactory">  
  3.             <ref bean="sessionFactory" />  
  4.         property>  
  5.     bean>  

TreeManager.java如下:

java 代码
  1. public class TreeManager extends HibernateDaoSupport{   
  2.        
  3.     public  List getRoots(Class cls){    
  4.       
  5.     return this.getHibernateTemplate().find(" from "+ cls.getName()+ " where enabled=true and parent_id is null order by id");   
这个问题我跟好几个人讨论都没有解决,本来就是个转型错误,却搞的这么郁闷,希望这个帖子不要被封掉,如果要封最好能解决了再封,这样我也好受点!

你可能感兴趣的:(Spring,Bean,SSH,配置管理,Eclipse)