我有一個「舊」的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'設置,然後再試一次,看看它是否已設置 –