使用Spring Boot和Sitemesh过滤器时,模板路径应该是什么?

时间:2016-05-25 22:57:45

标签: java spring spring-mvc spring-boot sitemesh

我尝试使用基于Java注释的配置的Spring Boot(4+)模板化Sitemesh(3)。

当我点击控制器URL时,会调用处理程序方法。 Sitemesh过滤器已激活(调试证明)。

但是我得到的是404,我相信是因为配置我没有找到Freemarker模板(错误的路径)。

代码如下,任何建议我做错了什么都会很棒!

过滤器:     @WebFilter 公共类SitemeshFilter扩展了ConfigurableSiteMeshFilter {

    @Override
    protected void applyCustomConfiguration(SiteMeshFilterBuilder builder) {
        System.out.println("in sitemesh filter");
        builder.addDecoratorPath("/*", "templates/main.ftl")
            .setMimeTypes("text/html")
            .addExcludedPath("/javadoc/*")
            .addExcludedPath("/brochures/*");
     }

控制器:

@Controller
public class UserController {

@Autowired
MemberService memberService;

@RequestMapping(value="member/{id}")
public ModelAndView viewMember(@PathVariable("id") int memberId, ModelAndView mv) {
    mv.setViewName("member");
    ClubMember member = memberService.getClubMember(memberId);
    mv.addObject("member", member);
    return mv;
  }
}

主要课程:

@SpringBootApplication
@ServletComponentScan
@EnableAutoConfiguration(exclude = {ErrorMvcAutoConfiguration.class})
public class ClubManagementApplication {

    public static void main(String[] args) {
        SpringApplication.run(ClubManagementApplication.class, args);
    }
 }

Application.properties:         spring.mvc.view.prefix = /视图/

我的模板位于: src / main / resources / templates< - 这就是我将sitemesh模板用于实时的地方 src / main / resources / views< - 这里是Freemarker页面

1 个答案:

答案 0 :(得分:0)

如果其他人有同样的问题:

模板最终出现在资源/模板中

sitemeshfilter:

        @Override
    protected void applyCustomConfiguration(SiteMeshFilterBuilder builder) {
        builder.addDecoratorPath("/*", "/main.ftl")
            .setMimeTypes("text/html", "application/xhtml+xml",                       "application/vnd.wap.xhtml+xml");
     }

在' /main.ftl'

之前没有注意