Action基类 BaseAction:
protected LogService logService; //并设置setget方法
public void saveLog() {
logService.saveLog();
}
Action类 AccountAction类继承BaseAction
在AccountAction中调用saveLog()方法。结果logService为null。
解决思路:
由于AccountAction继承了BaseAction,所以相当于AccountAction中有logService这个变量。也有saveLog这个方法,所以,在AccountAction中调用saveLog()方法,实际上调用的是自己的。所以只要在AccountAction所对应的bean中,增加一个property,如下:
<bean id="accountAction" class="com.system.action.account.AccountAction" scope="prototype">
<property name="accountService" ref="accountService"></property>
<property name="uMajorDAO" ref="uMajorDAO"></property>
<property name="logService" ref="logService"></property> //新添的
</bean>
这样,在AccountAction中调用saveLog()方法时,loginService就有值了。
这主要和继承这个概念有关。
BaseAction是一个通用的Action,其他Action继承了BaseAction。
所以在其他Action中,实际上都有隐藏的一些代码,这些代码就是BaseAction中的所有代码。
这些代码不能直接看到,但它真实存在于每个继承了BaseAction的Action中。
当其他Action调用BaseAction中的方法时,实际上,它调用的是自己的代码(即那些BaseAction中的代码)。