我有一个“旧”的Spring Web项目,我尝试逐步升级,这意味着我需要在同一时间使用新旧方法。比如我有一个拦截器和SimpleUrlHandlerMapping建立这样声明:混合配置中的拦截器:SimpleUrlHandlerMapping和带注释的控制器
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="interceptors">
<list>
<ref bean="acessControlInterceptor"/>
</list>
</property>
<property name="mappings">
<props>
<prop key="page1.do">page1</prop>
</props>
</property>
</bean>
<bean id="acessControlInterceptor" class="org.foo.AccessControlInterceptor">
<property name="someBO" ref="org.foo.bo.ISomeBO"/>
</bean>
我开始与@Controller和@RequestMapping(“/ page2.do”)标注集成控制器,这意味着我不的网址添加到SimpleUrlHandlerMapping,当然我还添加了mvc:annotation-driven和context:component-scan。这是有效的,新旧页面相处融洽,但我意识到我的拦截器不是为那些新的控制器而调用的。所以我补充说,我的配置:
<mvc:interceptors>
<ref bean="acessControlInterceptor" />
</mvc:interceptors>
其中一期工程,我指的是拦截器“称为” ......但是属性“someBO”现在总是空! 这里是拦截器(简体):我拦截
public class AccessControlInterceptor extends HandlerInterceptorAdapter {
private ISomeBO someBO;
public boolean preHandle(HttpServletRequest pRequest, HttpServletResponse pResponse, Object handler) throws Exception {
...
// throws a null pointer exception on someBO
}
public ISomeBO getSomeBO() {
return someBO;
}
public void setSomeBO(ISomeBO pSomeBO) {
someBO = pSomeBO;
}
}
现在怎么来的属性(因为其实我有很多)未设置了吗?
谢谢!
编辑: 因此,我清理并重新开始从头开始,现在它的工作......感谢所有“浪费”时间阅读和回答的人!我希望也许我的问题至少可以帮助那些寻找这种配置的人;-)
之前是否设置了此属性?我没有看到任何原因,如果它已经工作,它现在不工作 –
只需确认删除'mvc:interceptors'设置,然后再试一次,看看它是否已设置 –