spring3和struts2集成

时间:2013-02-04 07:45:15

标签: spring spring-mvc struts2 spring-integration

我在我的应用程序中使用struts2和hibernate。我已将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();

它也得到并设定。 当我运行这个项目时,谈到

String m = test1.testService() 
出现

nullPointerException。 我不确定所有配置是否正确完成或错过了什么。 请帮忙。

2 个答案:

答案 0 :(得分:1)

由于您已经在使用Struts2 + Spring,为什么不使用他们的插件?可以找到here

通过使用该插件,您可以更紧密地集成到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然后将authenticateLoginService bean注入到具有名为authenticateLoginService的实例变量的所有类中,前提是它具有setter和吸气剂

答案 1 :(得分:0)

test1 nullnull pointer exceptionString m = test1.testService()行投放property name="test1"的原因。

我不确定,但你可以尝试一下。 property name="TestIml"代替{{1}}