要在SSH的框架下建立ACTION的测试,除了前面提到的基本方法外,还要注意下面的:
1 如果ACTION中有调用某个类的方法,在该方法中要用到SessionFactory等,最好把这个类做成一个DAO,让它继承HibernateDaoSupport,让SPRING框架自动注入,当然要配置这个DAO,如
<bean id="creatExcelDao" class="org.macaulites.tools.CreatExcelFromDatabase">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
并且要在BeanNameAutoProxyCreator中配置这个creatExcelDao
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<!-- 指定对满足哪些bean name的bean自动生成业务代理
<property name="beanNames">
<!-- 下面是所有需要自动创建事务代理的bean-->
<list>
<value>adminSer</value>
<value>creatExcelDao</value>
</list>
<!-- 此处可增加其他需要自动创建事务代理的bean-->
</property>
<!-- 下面定义BeanNameAutoProxyCreator所需的事务拦截器-->
<property name="interceptorNames">
<list>
<!-- 此处可增加其他新的Interceptor -->
<value>transactionInterceptor</value>
</list>
</property>
</bean>
在建立个这个DAO中需要注入会话工厂的语句是
//有异常出现 说明注入失败
ClassMetadata classMetadata = factory.getClassMetadata(this.databaseName);
//只能获取hbm.xml中映射为<property>的字段 <id>字段不能作为属性字段返回
String[] titles = classMetadata.getPropertyNames();
2 在配置这个ACTION时,result的type值一定要设置,否则出现异常
<action name="exportExcel" class="org.macaulites.action.ExportExcelAction" method='testCreatExcelFromDatabase'>
<result name="success" type="json"/>
<result name="error" type="json"/>
</action>