我是Spring MVC的新手。我有基本的Rest Controller和JSP。我希望能够从JSP中访问请求映射注释中的URL。我注意到Spring MVC 4.1中的mvcUrl允许你这样做。但是当我尝试这个时遇到错误:SpringMVC - 错误使用mvcUrl - 缺少WebApplicationContext
当我打开localhost/test.jsp
。我看到这个在浏览器:
org.apache.jasper.JasperException: javax.el.ELException: Problems calling function 's:mvcUrl'
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:556)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
.....
java.lang.IllegalArgumentException: Cannot lookup handler method mappings without WebApplicationContext
org.springframework.util.Assert.notNull(Assert.java:115)
org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder.getRequestMappingInfoHandlerMapping(MvcUriComponentsBuilder.java:521)
org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder.fromMappingName(MvcUriComponentsBuilder.java:330)
org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder.fromMappingName(MvcUriComponentsBuilder.java:313)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
....
下面是我用
@RestController
@RequestMapping("/foo")
public class FooRestController {
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String hello() {
return "hello";
}
}
JSP文件中的一些示例代码 - test.jsp的
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
<a href="${s:mvcUrl('FRC#hello').build()}">Link to Hello</a>
可能是什么设置错了吗?
当我打localhost/foo/hello
我确实收到一个json字符串"hello"
。这是不是意味着调度程序servlet工作正常,并且WebApplicationContext
实际设置正确?
如果它返回“你好”,那么你可以说“你好”,不需要编码。 –
不,这意味着你应该使用'@ Controller'而不是'@ RestController'。 – kryger
我不知道我理解你。 – Jaskirat