Каким должен быть путь к шаблону при использовании Spring Boot и фильтра Sitemesh?
Я пытаюсь использовать шаблоны Sitemesh (3) с Spring Boot (4+) с помощью конфигурации на основе аннотаций Java.
Когда я нажимаю на 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 = / views /
Мои шаблоны живут по адресу: src/main/resources/templates <- здесь я поместил живые шаблоны sitemesh src / main / resources / views <- вот страницы Freemarker
1 ответ
В случае, если у кого-то есть такая же проблема:
шаблоны оказались в ресурсах / шаблонах
sitemeshfilter:
@Override
protected void applyCustomConfiguration(SiteMeshFilterBuilder builder) {
builder.addDecoratorPath("/*", "/main.ftl")
.setMimeTypes("text/html", "application/xhtml+xml", "application/vnd.wap.xhtml+xml");
}
Ничего не замечайте перед '/main.ftl'