我有包,但我不知道如何使用它。我只是像使用.jsp文件一样使用它们吗?
我尝试过这样的事情:
test.hbs
<p>{{message}}</p>
在我的控制器中:
private static class M {
private final String message;
public M(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
@RequestMapping("/test")
public ModelAndView testView() {
ModelAndView mav = new ModelAndView("test.hbs");
M m = new M("Hello, world!");
mav.addObject("m", m);
return mav;
}
我收到错误: javax.servlet.ServletException:无法解析名称为&#39; test.hbs&#39;在名为&#39;调度员&#39;
的servlet中我已经将 test.hbs 放在/WEB-INF/views/test.hbs中。如果我把任何.jsp文件放在那里,它就可以了。但出于某种原因.hbs无效。有什么想法吗?
答案 0 :(得分:8)
Spring MVC没有对Handlebars的开箱即用支持(有关支持的视图技术列表,请参阅official documentation)。
话虽如此,可以直接向Spring MVC添加对任何基于JVM的视图技术的支持。在较高级别,这需要实施org.springframework.web.servlet.View
及其相应的org.springframework.web.servlet.ViewResolver
。
幸运的是,已存在提供此集成的an open source project。可以遵循以下步骤将此项目集成到现有的Spring MVC应用程序中。
第1步:将库添加到构建系统(假设为Maven)
<dependency>
<groupId>com.github.jknack</groupId>
<artifactId>handlebars-springmvc</artifactId>
<version>4.0.6</version>
</dependency>
第2步:在
ViewResolver
(或等效的Java配置)中为Spring MVC应用程序配置句柄dispatcher-servlet.xml
<bean class="com.github.jknack.handlebars.springmvc.HandlebarsViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".hbs"/>
</bean>
第3步:将Handlebars视图添加到应用程序
鉴于上述配置,Handlebars视图应添加到/WEB-INF/views/
文件夹下。
第4步:加载句柄视图
@RequestMapping("/test")
public ModelAndView testView() {
ModelAndView mav = new ModelAndView("test");
M m = new M("Hello, world!");
mav.addObject("m", m);
return mav;
}
请注意,视图名称不应包含.hbs
,因为后缀已添加到配置中。