Action基類中注入service的方法(SSH框架)
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中的程式碼)。