我的spring mvc应用程序有一个ContentNegotiatingViewResolver,它定义了JsonView以呈现json共鸣:
<mvc:annotation-driven/>
<context:component-scan base-package="world.domination.test"/>
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="json" value="application/json"/>
</map>
</property>
<property name="defaultViews">
<list>
<bean class="com.secondmarket.connector.springmvc.MappingJacksonJsonViewEx"/>
</list>
</property>
</bean>
整个应用程序位于根URL“myapp”。一切都按照我的需要运作。
第一个问题是:如何在访问某个网址时返回静态html页面?比如,当访问Spring uri / myapp / test时,我想呈现一个位于root 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<String, Object>());
}
}
get()方法应该告诉Spring渲染一个TestStuff.html,但我得到了 错误表示缺少名为“/TestStuff.html”的视图。
第二个问题是如何避免将扩展名放到网址上的必要性。在我的示例中,当我使用 / myapp / test 而不是 /myapp/test.html 时,我的ContentNegotiatingViewResolver使用呈现{}(空花括号)的json视图
任何指针都受到高度赞赏。
答案 0 :(得分:6)
不要从控制器返回“/TestStuff.html”,而是尝试返回“redirect:/TestStuff.html”。
另一种选择是为静态页面创建和注册视图解析器。也许是这样的:
<bean id="staticViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="prefix" value="/WEB-INF/static/"/>
<property name="suffix" value=".html"/>
</bean>
答案 1 :(得分:0)
执行此操作的最佳方法是使用InternalResourceViewResolver和mvc:view-controller标记(有关详细信息,请参阅相应的Spring参考手册)。只需将以下内容包含在您的应用程序上下文XML文件中(在这种情况下,您的静态文件TestStuff.html将位于/ WEB-INF / static-pages目录中):
<bean>
<bean id="staticPagesViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/static-pages/"/>
<property name="suffix" value=".html"/>
</bean>
<mvc:view-controller path="/test" view-name="TestStuff"/>
答案 2 :(得分:0)
tutorialspoint有一个很好的完整示例: http://www.tutorialspoint.com/spring/spring_static_pages_example.htm