在SpringMVC中,java将控制器映射到绝对路径
我有一个简单的webapp,在所有JSP页面上都可以看到一个搜索框
我的控制器如下所示:
@RequestMapping(value = "/search", method = RequestMethod.GET)
public String search(Map<String, Object> map, HttpServletRequest request) {
/*...*/
return "searchresult";
}
在我的JSP中,我使用:<form action="search" method="GET">
来发出请求。因此,例如,如果我从/myproject/index
发出一个请求,这将非常有效,结果URL是/myproject/search
。但是现在,如果我从另一个级别执行相同的操作,例如/myproject/index/level2
,结果URL是/myproject/index/search
,并且不起作用,因为它找不到具有该映射的控制器
我想做的是将控制器映射到一个绝对路径,这样,在第二种情况下,生成的URL将是/myproject/search
,而不是/myproject/index/search/
在我的web.xml
中,我有以下几点:
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
# 1 楼答案
使用EL
EL表达式将解析为应用程序的上下文路径。然后将完整路径附加到它
或者,^{} 标记库提供
url
标记这或多或少也是一样的
Spring还提供了自己的
url
标记,您可以查看它