如何在Spring MVC中使用Handlebars?

时间:2016-12-10 23:36:45

标签: spring spring-mvc handlebars.js handlebars.java

我有包,但我不知道如何使用它。我只是像使用.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无效。有什么想法吗?

1 个答案:

答案 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,因为后缀已添加到配置中。