2

我在我的应用程序中使用 struts2 和休眠。我已将 ContextLoaderListener 添加到web.xml.

ApplicationContext.xml中,我有 2 个这样的 bean:

<bean id="TestImpl"
      class="Service.Impl.TestImpl">
</bean>
<bean id="testaction"
      class="Action.TestAction">
     <property name="TestIml" ref="TestImpl"/>
</bean>

在 TestAction 类中,我有一个对象和该对象的方法,如下所示:

private TestImpl test1;
String m = test1.testService();

它也有get和set。当我运行这个项目时,当谈到

String m = test1.testService() 

出现空指针异常。我不确定所有配置是否正确完成或遗漏了什么。请帮忙。

4

2 回答 2

1

既然你已经在使用 Struts2 + Spring,为什么不使用他们的插件呢?可以在这里找到

通过使用该插件,您可以更紧密地集成到 Struts 2。这使您能够将 bean 注入到内部框架对象中,而不仅仅是注入到您自己的 bean 中。

例如,使用插件 Struts 2 将检查您的所有操作,当它创建它们以服务请求并注入它们时。默认情况下,Struts2-spring 插件按名称使用 autowire。因此,例如在您的操作类中,您有此代码。

public class LoginAction extends UserAction{

    public String execute() {
        return "success";
    }

    public AuthenticateLoginService getAuthenticateLoginService() {
        return authenticateLoginService;
    }

    public void setAuthenticateLoginService(
            AuthenticateLoginService authenticateLoginService) {
        this.authenticateLoginService = authenticateLoginService;
    }

    private AuthenticateLoginService authenticateLoginService;

}

在您的 applicationContext.xml 中,您有此配置。

<bean id="authenticateLoginService" class="services.AuthenticateLoginService"
    scope="singleton">
    <... some properties here
</bean>

所有具有名为“authenticateLoginService”的实例变量的Action Classes,然后spring会将authenticateLoginServicebean注入到所有具有名为的实例变量的类中authenticateLoginService,前提是它具有setter和getter

于 2013-02-04T08:43:40.163 回答
0

test1就是null为什么它null pointer exception在这String m = test1.testService()条线上抛出。

我不确定,但你可以试试这个。 property name="test1"代替property name="TestIml"

于 2013-02-04T09:28:20.840 回答