我希望你能解决我的简单问题。
我已配置spring mvc应用程序,它是从简单的jsf应用程序配置的。我使用primefaces库。
我有一个控制器,它处理来自welcome.do请求的请求,ViewResolver通过带有前缀/ ui /和后缀.xhtml的规则查找。简单而常用的配置。
@RequestMapping( “/ *。做”) public void actionDo(){ logger.debug( “调用”); } 第一个请求是corectly处理的,但是当我从欢迎表单生成ajax请求到某个sessionBean时,它会生成警告:
[2011-01-18 21:28:28,442] org.springframework.web.servlet.DispatcherServlet.doService DispatcherServlet with name 'springDispatcher' processing POST request for [/prime/ui/welcome.do]
[2011-01-18 21:28:28,443] org.springframework.web.servlet.PageNotFound.noHandlerFound No mapping found for HTTP request with URI [/prime/ui/welcome.do] in DispatcherServlet with name 'springDispatcher'
因此,它尝试按名称/ui/welcome.do查找视图,但不能,因为ajax请求与我的请求处理规则不匹配。 DispatcherServlet是否应该处理ajax请求?
我认为这是非常常见的问题,可以简单地解决,但我不知道如何解决。没有Spring MVC一切正常。那么,你能告诉我通过DispatcherServlet传递ajax请求的好方法吗?
我的web.xml文件的一部分。
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>springDispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springDispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
谢谢!
答案 0 :(得分:0)
您的AJAX请求是作为POST请求发送的,您必须将HTTP方法添加到@RequestMapping-annotation中,例如@RequestMapping(value =“/ * .do”,method = RequestMethod.POST)。如果省略注释中的“method”-value,则默认为RequestMethod.GET。
答案 1 :(得分:0)
您正在使用jsf来处理表示层;为什么你也使用spring mvc? 你必须使用其中一个:尝试只使用faces servlet。