我有一個愚蠢的問題我不知道爲什麼會發生這種情況 - 如果我在我的映射中有斜槓,視圖解析失敗;我有這樣的控制器:@RequestMapping斜槓無法返回視圖
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class PartialsController {
@RequestMapping ("/views/partials/{view}") // Doesn't work!
public String partial (@PathVariable ("view") String view) {
System.out.println ("\n\nVIEW=\"" + view + "\"\n\n");
return "partials/" + view;
}
@RequestMapping ("/partial-{view}-view") // Works!!!
public String test (@PathVariable ("view") String view) {
return partial (view);
}
@RequestMapping ("/views/partials/{view}/show.html") // Doesn't work!
public String test2 (@PathVariable ("view") String view) {
return partial (view);
}
}
完整堆棧跟蹤是在這裏:http://pastebin.com/CXwYd9i3這裏是它的頂部(我看到我在任何情況下的System.out):
[DEBUG] : Could not complete request
java.lang.NullPointerException
at java.net.URLEncoder.encode(URLEncoder.java:205)
at java.net.URLEncoder.encode(URLEncoder.java:171)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:474)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:669)
...
我真的很喜歡使用第一種方法,它對我所做的事情更有意義;非常感謝您的幫助!
P.S.忘了補充,這是我的Java配置:
@Override
public void onStartup (ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext mvcContext = new AnnotationConfigWebApplicationContext();
mvcContext.register (MvcConfiguration.class);
Dynamic dispatcher = servletContext.addServlet ("dispatcher", new DispatcherServlet (mvcContext));
dispatcher.setLoadOnStartup (1);
dispatcher.addMapping ("/");
}
我試過了,我只是直線上升404然後 - 沒有找到映射。這對我來說也是有道理的,因爲我認爲明星意味着所有映射直到另一個斜線。問題不是映射本身中的多個斜槓,它與視圖結合,因爲我在應用程序的其他地方映射了多個斜槓,返回JSON(@ResponseBody因此沒有視圖分辨率發生),一切正常,還有帶有斜線的控制器確實被調用,我確實看到了我放入的任何日誌記錄,所以無論從哪裏出錯都會在控制器返回後出錯。 –