我正在研究遗留应用程序。它有一个主控制器,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
答案 0 :(得分:0)
虽然这种配置在遗留Java应用程序中非常常见(我的网络搜索结果如此),但我找不到修复此异常的方法。我等了足够的时间,我也没有任何建议来解决这个问题。
所以,我改变了我的计划并升级了Spring版本并将方法映射更改为注释。在这一点上,我没有得到这个例外。