我是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