我試圖得到一個簡單的REST服務與Spring 3.0的工作,但保留撞到阻塞錯誤:春3.0 REST實現的DispatcherServlet無法找到映射
沒有映射發現與URI的HTTP請求[/旅遊/美國/紐約/ SFO /1122分之20091010/真/]在DispatcherServlet的名爲 '調度' *
然而,在日誌文件中還指出:
org.springframework.web.servlet.mvc.annotation .Def aultAnnotationHandlerMapping - 將映射的URL路徑[/ travel/us/{from}/{to}/{date}/{time}/{departure} /]拖放到handler [[email protected]] *
我讀的是一個指示,說明從URI到experiment.SomeController類作爲處理程序的映射。
我必須忽略其中一個配置文件中的一個簡單錯誤,但是在多次檢查所有內容並做了相當多的Google搜索之後,我還沒有找到解決方案。我已經開啓了Spring類的日誌記錄,但是這也沒有揭示這個問題。
下面是相關的配置文件和一些代碼片段,任何幫助都是有效的。該webapp部署到Glassfish v2.1,我在OS X上使用JDK1.5上Spring 3.0.0的M3版本。
目標是讓getTripDetails()返回XML版本的tripdetails 。因此使用MarshallingView。
從web.xml中:
<servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherSe rvlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>
從調度員servlet.xml中:
<context:annotation-config /> <context:component-scan base-package="net.vermaas.reisadvies.server" /> <bean class="org.springframework.web.servlet.mvc.annotat ion.DefaultAnnotationHandlerMapping"> <property name="alwaysUseFullPath" value="true"/> </bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.Conten tNegotiatingViewResolver"> <property name="mediaTypes"> <map> <entry key="xml" value="application/xml"/> </map> </property> <property name="viewResolvers"> <list> <bean class="org.springframework.web.servlet.view.BeanNa meViewResolver"/> <bean class="org.springframework.web.servlet.view.Intern alResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> </list> </property> </bean> <bean id="marshaller" class="org.springframework.oxm.xstream.XStreamMars haller"> </bean> <bean id="content" class="org.springframework.web.servlet.view.xml.Ma rshallingView"> <property name="contentType" value="application/xml" /> <property name="marshaller" ref="marshaller"/> </bean>
控制器類: @Controller public class SomeController {
static Logger logger = Logger.getLogger(SomeController.class);
public SomeController() { }
@RequestMapping(value="/travel/us/{from}/{to}/{date}/{time}/{departure}", method=RequestMethod.GET)
public ModelAndView getTripDetails(@PathVariable String from, @PathVariable String to, @PathVariable String date, @PathVariable String time, @PathVariable boolean departure, Model model) {
logger.debug("getTripDetails"); // not logged
// Do some stuff
TripDetails td = ...
ModelAndView mav = new ModelAndView();
mav.setViewName("content");
mav.addObject("tripDetails", td);
return mav;
}
}
上出了什麼問題有什麼想法?或者是一個指向Spring 3.0的REST服務的工作示例的指針,其中包含XML作爲輸出?
問候, 呂
這是解決方案的一部分。除此之外,我還必須將視圖bean的bean與定義的URL對齊。因此: and in the controller: @RequestMapping(value =「/ content/...」) –
Gero
2009-07-02 05:59:04
此解決方案至少不適用於Google App Engine。 – pjesi 2009-09-23 10:42:08