我尝试使用基于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页面
答案 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'
之前没有注意