2010-10-09 5 views
36

Yaylı mvc çerçeveyi kullanarak bir web uygulaması geliştiriyorum. Hem ek açıklama hem de beanName tabanlı URL eşlemelerini yapmak istiyorum.İşleyici istisnası için adaptör yok

Ben

<mvc:annotation-driven /> 

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> 

My açıklama tabanlı kontrolörler iyi çalışıyor ama istisna "işleyicisi için hiçbir adaptör" atıyor url eşlemesi dayalı beanNamed benim bağlam dosyasında aşağıdaki yapılandırmaları ettik.

Burada yanlış olan ne yapıyorum?

bahar mvc 3 farklı istek işleyicisi adaptörleri tanımlar Varsayılan olarak

cevap

77

, onlar

org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter 
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter 
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter 

olan ederiz Yani gerek En az tanımlarsanız, içerik dosyasında tanımlamak zorunda ama bağlam dosyalarınızdaki bir işleyici bağdaştırıcısı, bahar varsayılan bağdaştırıcıları oluşturmaz. yapılandırmanızı olarak

Bu bağlamda DefaultAnnotationHandlerMapping ve AnnotationMethodHandlerAdapter hem tanımlamak neden olur this bahar belgelerine göre, <mvc:annotation-driven /> kullanıyor. Bağlam tanımımızda AnnotationMethodHandlerAdapter'u yarattığımız için ilkbahar, diğer iki handlerAdapters'ı yaratmayacaktır. Bu yüzden söz konusu istisnayı alıyorsunuz.

BeanNameUrlMapping, handlerAdapter SimpleControllerHandlerAdapter'a gereksinim duyar.

Bu özel durumu çözümlemek için, bağlamınızda "SimpleControllerHandlerAdapter" türünde yeni bir fasulye oluşturabilirsiniz.

<bean 
    class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"> 
</bean> 
+1

Bu basit bir doğrudan cevaptır, harika bir açıklama :) –

+1

Bu, bulmak kolay değildi. Ama sonunda yaptım. Mükemmel bir açıklama. Ek açıklama desteği ekledim ve tüm denetleyicileri aynı anda taşımak istemedim. – panther

+0

SimpleControllerHandlerAdapter ekleyerek benim için iyi çalıştı. Teşekkürler! – Ricardo

1

Bahar MVC 2.5'ü yay ağına entegre etmeye çalışırken aynı şey bana da oldu. Web akışı için yapılandırma dosyasına FlowHandlerdAdapter verdim ancak MVC için yok. Bu nedenle, yukarıda sözü edildiği gibi, problemi çözecek olan bu tipte bir basit-kontrolcü el fenotipi olan bir BEAN tanımlamamız gerekmektedir.