Spring 2.5的dispatcher.xml配置,“无法设置bean属性'methodNameResolver'”错误

时间:2018-03-07 06:09:07

标签: java spring spring-mvc

我正在研究遗留应用程序。它有一个主控制器,JobController,它是从org.springframework.web.servlet.mvc.multiaction.MultiActionController扩展而来的。此应用程序以前运行(我不知道如何),但目前在启动期间我收到与methodNameResolver相关的错误。

错误说“bean类的无效属性'methodNameResolver'[packageName.JobController]:Bean属性'methodNameResolver'不可写或者setter方法无效。setter的参数类型是否与getter的返回类型匹配?“

我的dispatcher.xml如下所示

<bean class="packageName.JobController">

    <property name="methodNameResolver">

        <bean class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
            <property name="mappings">
                <props>
                <prop key="/login.htm">hndLoginHTM</prop>               
                <prop key="/login.ajax">hndLoginAJAX</prop>
                <prop key="/logout.ajax">hndLogoutAJAX</prop>
                <prop key="/submit.data">hndSubmitData</prop>
                <prop key="/get.log">hndGetLog</prop>
                <prop key="/getJdbc.log">hndGetJdbcLog</prop>
                <prop key="/vtInsert.deneme">vtInsertTest</prop>            
                </props>
            </property>
        </bean>
    </property>

 </bean>

当我用“MultiActionController”替换“packageName.JobController”时,我没有收到此错误,但是由于MultiActionController是一个spring类,它不包含我的方法(hndLoginHTM,hndLoginAJAX),因此这会导致正常的新错误。

总之,我认为Spring不明白我的控制器是MultiActionController的一个实例,因此它给属性带来了错误。

我已经尝试以各种方式编写bean定义,但没有任何效果。任何帮助将不胜感激。

您可以提供升级Spring版本并使用注释。它在我们的计划中,但在此之前我们需要使这个版本工作并进行一些测试。

此致 Ferda

1 个答案:

答案 0 :(得分:0)

虽然这种配置在遗留Java应用程序中非常常见(我的网络搜索结果如此),但我找不到修复此异常的方法。我等了足够的时间,我也没有任何建议来解决这个问题。

所以,我改变了我的计划并升级了Spring版本并将方法映射更改为注释。在这一点上,我没有得到这个例外。