当前位置: 首页 > 知识库问答 >
问题:

为Mustach模板引擎配置视图解析器时出错

潘胤
2023-03-14

我在spring-boot项目中有以下配置文件:

@Configuration
public class AppConfig {
    @Bean
    public ViewResolver mustacheViewResolver() {
        MustacheViewResolver viewResolver = new MustacheViewResolver();
        viewResolver.setPrefix("/templates/");
        viewResolver.setSuffix(".mustache");
        viewResolver.setOrder(1);
        return viewResolver;
    }

}

当我运行应用程序时,出现以下错误:
描述:

无法注册在类路径资源[org/springframework/boot/autoconfigure/mustache/MustacheServletWebConfiguration.class]中定义的bean“mustacheviewsolver”。具有该名称的bean已经在类路径资源[com/example/demo/AppConfig.class]中定义,并且重写被禁用。

行动:

考虑重命名其中一个bean或通过设置spring.main启用覆盖。允许bean定义覆盖=true我不确定是否正确配置了视图解析器

删除配置类后出错:

o.s.w.s.v.ContentNegotiatingViewResolver : Selected '*/*' given [*/*]
o.s.w.servlet.view.InternalResourceView  : View name 'tweets.mustache', model {tweets=null}
o.s.w.servlet.view.InternalResourceView  : Forwarding to [tweets.mustache]
o.s.web.servlet.DispatcherServlet        : "FORWARD" dispatch for GET "/tweets.mustache?email=tim@gmail.com", parameters={masked}
 o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped to ResourceHttpRequestHandler [classpath [META-INF/resources/], classpath [resources/], classpath [static/], classpath [public/], ServletContext [/]]
 o.s.w.s.r.ResourceHttpRequestHandler     : Resource not found
 o.s.web.servlet.DispatcherServlet        : Exiting from "FORWARD" dispatch, status 404
 o.s.web.servlet.DispatcherServlet        : Completed 404 NOT_FOUND
 o.s.web.servlet.DispatcherServlet        : "ERROR" dispatch for GET "/error?email=tim@gmail.com", parameters={masked}
 s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController#error(HttpServletRequest)
o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json, application/*+json, application/json, application/*+json]
o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{timestamp=, status=404, error=Not Found, path=/tweet2}]
o.s.web.servlet.DispatcherServlet        : Exiting from "ERROR" dispatch, status 404



 @GetMapping("/tweet2")
    public ModelAndView getTweetsByEmail(@RequestParam String email) {
        HQLExample.insertRecords();
        ModelAndView modelAndView = new ModelAndView("tweets.mustache");
        List<Tweet> tweets = tweetMap.get(email);
        modelAndView.getModel().put("tweets",tweets);
        return modelAndView;
    }

共有1个答案

章昱
2023-03-14

假设您已将spring boot starter Mustach添加为依赖项(以轻松包含所有需要的依赖项)。当Spring Boot在类路径上检测到Mustache时,它将自动配置MustacheViewResolver,该解析器将从类路径上的模板加载Mustache模板。文件应以小胡子结尾。

考虑到这一点,只需删除您的AppConfig类,因为它会干扰自动配置。

在控制器中,视图的名称是您拥有的名称,但没有<代码>。将由ViewResolver添加的胡子。

所以简而言之,你应该移除一些东西,它就会起作用。在这种情况下,用更少的钱做更多的事情。

 类似资料:
  • 具体查看ejs官方文档 https://github.com/mde/ejs

  • 我们自己实现了一个轻量级的模板引擎,不要问为什么不用smart之类的,因为我们认为没有必要为了一个小小的模板引擎而引入smaart这样复杂的实现。你可能会说,smart功能强大,支持各种标签,标签也是很强大,而且还可以对模板引擎进行各种"灵活"的配置... 这里我们觉得有必要说明一下: 框架的内置模板引擎基本上实现了我们日常开中所有常用的标签。 不常用的标签我们也做了巧妙的实现。 我们只提供了扩展

  • 内置模板引擎 视图的模板文件可以支持不同的解析规则,默认情况下无需手动初始化模板引擎。 可以通过下面的几种方式对模板引擎进行初始化。 配置文件 内置模板引擎的参数统一在配置目录的template.php文件中配置,例如: return [ // 模板引擎类型 支持 php think 支持扩展 'type' => 'Think', // 模板路径 '

  • Warning: The packages listed below may be outdated, no longer maintained or even broken. Listing here does not constitute an endorsement or recommendation from the Expressjs project team. Use at your

  • Use the app.engine(ext, callback) method to create your own template engine. ext refers to the file extension, and callback is the template engine function, which accepts the following items as parame

  • hi-nginx-java内置了两个mustache模板引擎:mustache.java和jmustache。 以下介绍仅就jmustache而言。 字符串模板 字符串模板是最简单的情况。例如: package test; import hi.request; import hi.response; import hi.route; import java.util.regex.Matcher