can sitemesh3 be used by spring boot 3.x?

520 views Asked by At

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 ?

1

There are 1 answers

0
stephen carvalho On

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