Каким должен быть путь к шаблону при использовании 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'

Другие вопросы по тегам