spring boot 3.x must be to use java 17 In java 17, almost javax is replace by jakarta like javax.servlet.Filter is replace to javax.servlet.Filter
when I extend ConfigurableSiteMeshFilter to setting decorator
public class WebSiteMeshFilter extends ConfigurableSiteMeshFilter{
@Override
protected void applyCustomConfiguration(SiteMeshFilterBuilder builder) {
builder.addDecoratorPath("/*", "/WEB-INF/views/decorator.jsp");
}
}
and implements WebMvcConfigurer
@Configuration
public class WebSiteMeshConfig implements WebMvcConfigurer{
@Bean
public FilterRegistrationBean siteMeshFilter() {
FilterRegistrationBean filter = new FilterRegistrationBean();
WebSiteMeshFilter siteMeshFilter = new WebSiteMeshFilter();
filter.setFilter(siteMeshFilter);
return filter;
}
}
it show me error The method setFilter(Filter) in the type FilterRegistrationBean is not applicable for the arguments (WebSiteMeshFilter)
that is because setFilter is use jakarta.servlet.Filter but ConfigurableSiteMeshFilter is implements Filter (javax.servlet.Filter)
I try use cast to let javax.servlet.Filter to be jakarta.servlet.Filter
but when run this project, it show me ConfigurableSiteMeshFilter cannot be cast to class jakarta.servlet.Filter
how can I do to fix this question ?
Use Sitemesh 3.2.0. This version is compatible with spring boot 3.x. You can additionally check out the documentation: https://github.com/sitemesh/sitemesh3?tab=readme-ov-file This version uses Jakarta packages instead of javax