【问题标题】:How to use Handlebars in Spring MVC?如何在 Spring MVC 中使用 Handlebars?
【发布时间】:2016-12-10 23:36:45
【问题描述】:

我有这些包,但我不知道如何使用它。我只是像使用 .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: 无法解析名称为“dispatcher”的 servlet 中名称为“test.hbs”的视图

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

【问题讨论】:

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


    【解决方案1】:

    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 步:在 dispatcher-servlet.xml(或等效的 Java 配置)中为 Spring MVC 应用程序配置 Handlebars ViewResolver

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

    【讨论】:

    • 嘿,感谢您的解释 - 但是我在 Spring MVC 4 中需要它(带有注释而不是 XML)。我知道如何创建这样的 bean,但是如何添加依赖项?
    • 需要将依赖项添加到您的构建文件(Maven 或 Gradle)中。该代码同样适用于 Spring 3/4。基于 XML 和注释的配置是等效的,因此只需将 XML sn-ps 转换为 Java。如果您不知道如何操作,请参阅 Spring 官方文档,该文档显示了两者的并排示例并从中学习。
    • Spring 5 支持的视图技术列表如下:docs.spring.io/spring/docs/current/spring-framework-reference/…
    猜你喜欢
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    相关资源
    最近更新 更多