benim Bahar Kontrolörü URL'ler için haritaya yapılandırarak devam eden sorunları yaşıyorum ve ben Bence, oldukça basit bir senaryoya aşağı var kullanan URL'ler Haritalama Kontrolör çalışma edilmelidir:Bahar MVC - Ek Açıklamalar
I ek açıklamaları kullanarak benim controller sınıfından yapılandırılması duyuyorum ve aşağıdaki gibi görünüyor:
@Controller
@RequestMapping(value = "/question/**")
public class QuestionController
{
/**
* Method to build users questions list
*
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping("/list")
public ModelAndView list(HttpServletRequest request, HttpServletResponse response) throws Exception{
//Display Questions List
}
}
kontrolör başka yapılandırma yoktur ben sadece <mvc:annotation-driven/>
yapılandırma ve benim webmvc config <context:component-scan>..
yapılandırmasına sahip, bu yüzden denetleyici otomatik olarak algılandı.
Şimdi, /question/list
'a gittiğimde, uygulamalar kaynağı bulamıyor ve bir ResourceNotFound
hatası alıyorum. Ancak, /question/question/list
'a gidersem, uygulama, doğru bir şekilde beklediğim sayfayı yükler.
Bunun neden /question/question/list
kullanarak yönteme yönlendirildiği hakkında herhangi bir fikriniz var mı?
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" p:order="3">
<property name="alwaysUseFullPath" value="true" />
</bean>
Bu sefer gittiğinizde:
Bunu takiben ben şöyle Bunu yapan, alwaysUseFullPath = true parametreleri kullanmak için tüm RequestMappings
zorlamak için benim webmvc config yapılandırmayı ekleyerek çalıştı/question/list hala doğru sayfayı yüklemek için başarısız, ancak günlükleri en azından doğru Controller tanımlayan, ancak sadece bu yöntemi bulmak için başarısız olduğunu gösteriyor (daha önce Kontrolörün URL'ye dayalı kontrolörü bulamadı):
2011-08-09 18:02:27,885 [http-8080-3] DEBUG org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - Matching patterns for request [/question/list] are [/question/**/list/, /question/**/list, /question/**/, /question/**]
2011-08-09 18:02:27,886 [http-8080-3] DEBUG org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - Mapping [/question/list] to handler '[email protected]23'
2011-08-09 18:02:27,886 [http-8080-3] DEBUG org.springframework.web.servlet.DispatcherServlet - Last-Modified value for [/microblog/question/list] is: -1
2011-08-09 18:02:27,886 [http-8080-3] DEBUG org.springframework.web.servlet.DispatcherServlet - DispatcherServlet with name 'microblog' processing GET request for [/microblog/question/list]
2011-08-09 18:02:27,886 [http-8080-3] DEBUG org.springframework.web.servlet.handler.SimpleMappingExceptionResolver - Resolving exception from handler [[email protected]23]: org.springframework.web.servlet.mvc.multiaction.NoSuchRequestHandlingMethodException: No matching handler method found for servlet request: path '/list', method 'GET', parameters map[[empty]]
2011-08-09 18:02:27,886 [http-8080-3] DEBUG org.springframework.web.servlet.handler.SimpleMappingExceptionResolver - Resolving to view 'resourceNotFound' for exception of type [org.springframework.web.servlet.mvc.multiaction.NoSuchRequestHandlingMethodException], based on exception mapping [.NoSuchRequestHandlingMethodException]
2011-08-09 18:02:27,887 [http-8080-3] DEBUG org.springframework.web.servlet.handler.SimpleMappingExceptionResolver - Exposing Exception as model attribute 'exception'
Anlatımları kullanarak bir URL'ye bir Denetleyici kablolamada elde etmeye çalıştığım göreceli olarak basit bir şeymiş gibi görünüyor, ancak doğru çalışmıyor - bunlardan herhangi birine rastlıyor veya herhangi bir göz kamaştırıcı hata görüyor benim üzerimde mi?
GÜNCELLEME
benim araştırmalarda bazı ilerlemeler yaptık.
<servlet-mapping>
<servlet-name>microblog</servlet-name>
<url-pattern>/question/*</url-pattern>
</servlet-mapping>
bu servlet eşleme kaldırırsanız, ve değişimi (Hala aynı servlet'dir tüm .html
eşleyen servlet-eşleme) şu şekildedir: Benim web.xml olarak
Ben servlet eşlemesi tanımlamak Ben /question/list.html
için kullanıyorum URL çalışır (aynı zamanda soru denetleyicisindeyönteminin @RequestMapping
ek açıklama yöntemini eşleme yöntemini /list.html
olarak değiştirir) çalışır.Özetle
:
Ben web bağlamında servlet eşlemesi
/question
sahipben bir yöntem düzeyi eşleme
QuestionController
için
/question
başka eşleme benim/list
Şimdi URL'lerim bu durumlar için .html bitmesini istemiyorum - Herkes ben bu sorunu aşmak nasıl biliyor? servlet-haritalama URL'den eşleşti /question
dize çıkarır belki sanki
set/ url-pattern> html içermeyen url'ler için –
Gengzu
Bunu kullanırsam, tüm resmimi, css kaynaklarını vb. Denetleyiciye yeniden yönlendirir ve bu nedenle onları bulmakta başarısız olur (tüm resimlerim/resimlerde/.. vb) - yani sayfayı yüklediğimde hiçbir resim veya css şekillendirmesi yok. URL'deki yolu çoğaltmaya gerek kalmadan sadece URL'leri denetleyiciye nasıl aktarabilirim? – rhinds
Dosyalarınızı WEB-INF klasöründe değil, yukarıdaki klasöre taşıyın. – Gengzu