2

我有包,但我不知道如何使用它。我只是像使用 .jsp 文件一样使用它们吗?

我尝试过这样的事情:

测试.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:无法解析名称为“dispatcher”的 servlet 中名称为“test.hbs”的视图

我已经把test.hbs正常放在 /WEB-INF/views/test.hbs 中。如果我将任何 .jsp 文件放在那里,它就可以工作。但由于某种原因,.hbs 不起作用。有任何想法吗?

4

1 回答 1

11

Spring MVC 没有对 Handlebars 的开箱即用支持(有关支持的视图技术列表,请参阅官方文档)。

话虽如此,向 Spring MVC 添加对任何基于 JVM 的视图技术的支持很简单。在高层次上,这需要实现 aorg.springframework.web.servlet.View及其对应的org.springframework.web.servlet.ViewResolver.

幸运的是,已经存在一个提供这种集成的开源项目。可以按照以下步骤将此项目集成到现有的 Spring MVC 应用程序中。

第 1 步:将库添加到构建系统(假设是 Maven)

<dependency>
  <groupId>com.github.jknack</groupId>
  <artifactId>handlebars-springmvc</artifactId>
  <version>4.0.6</version>
</dependency>

第 2 步:在(或等效的 Java 配置)ViewResolver中为 Spring MVC 应用程序配置 Handlebarsdispatcher-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 视图添加到应用程序

鉴于上述配置,应在/WEB-INF/views/文件夹下添加 Handlebars 视图。

第 4 步:加载 Handlebars 视图

@RequestMapping("/test")
public ModelAndView testView() {
  ModelAndView mav = new ModelAndView("test");
  M m = new M("Hello, world!");

  mav.addObject("m", m);

  return mav;
}

请注意,视图名称不应包含.hbs,因为后缀已添加到配置中。

于 2016-12-11T06:49:15.303 回答