我试图得到一个简单的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