1. 程式人生 > >Action基類中注入service的方法(SSH框架)

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中的程式碼)。