2013-06-05 109 views
0

我有一個「舊」的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; 
    } 
} 

現在怎麼來的屬性(因爲其實我有很多)未設置了嗎?

謝謝!

編輯: 因此,我清理並重新開始從頭開始,現在它的工作......感謝所有「浪費」時間閱讀和回答的人!我希望也許我的問題至少可以幫助那些尋找這種配置的人;-)

+0

之前是否設置了此屬性?我沒有看到任何原因,如果它已經工作,它現在不工作 –

+0

只需確認刪除'mvc:interceptors'設置,然後再試一次,看看它是否已設置 –

回答

0

您提供給BO的參考文獻是錯誤的。

<property name="someBO" ref="org.foo.bo.ISomeBO"/> 

在參考文獻中,您已經給出了BO類的完全限定名。應該有BO類的bean名稱。

試着改變它。我認爲這將解決您的問題。

+0

我沒有放置整個配置; - )bean「org.foo.bo.ISomeBO」在另一個配置文件中聲明。無論如何,它曾經工作... –