我的spring mvc应用程序只有一个contentnegotingviewresolver,它定义了用于呈现json资源的jsonview:
整个应用程序位于根url“myapp”上。一切按我的需要运转。
第一个问题是:访问某个url时如何返回静态html页面?比方说,当访问spring uri/myapp/test时,我想呈现一个驻留在根webapp文件夹中的html页面/teststuff.html。
我继续写了一个简单的控制器:
@Controller
@RequestMapping("test")
public class TestConnector {
@Autowired
private RestTemplate tpl;
@RequestMapping(method = RequestMethod.GET)
public String get() {
return "/TestStuff.html";
}
@RequestMapping(method = RequestMethod.POST)
public String post(@RequestParam("url") String url, @RequestParam("data") String data) {
return tpl.postForObject(url, data, String.class, new HashMap());
}
}
get()方法应该告诉spring呈现一个teststuff.html,但是我得到了
缺少名为“/teststuff.html”的视图时出错。
第二个问题是如何避免对url进行扩展。在我的示例中,当我使用/myapp/test而不是/myapp/test.html时,我的ContentNegotingViewSolver使用一个呈现{}(空大括号)的JSON视图。
任何一个指标都是高度赞赏的。
最佳答案:
不要从控制器返回“/teststuff.html”,而是尝试返回“redirect:/teststuff.html”。
另一个选项是为静态页面创建和注册视图解析器。也许是这样的: