【问题标题】:jquery datatables with thymleaf and <style> tag issue带有百里香叶和 <style> 标签问题的 jquery 数据表
【发布时间】:2020-12-04 12:26:09
【问题描述】:

我的问题是我的页面中有一个 jquery 数据表,它属于使用 springboot 2.3.2.RELEASE 和 Java 11 和 Thymleaf 的 Web 应用程序。

为了具有与以下相同的行为:Jquery datatables Row details

我的 png 文件如下:

在我的配置类中:

@Configuration
@EnableWebMvc
public class MvcConfig extends WebMvcConfigurationSupport {

    @Bean
    static PropertySourcesPlaceholderConfigurer propertyPlaceHolderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }

    @Override
    public RequestMappingHandlerMapping createRequestMappingHandlerMapping() {
        RequestMappingHandlerMapping requestMappingHandlerMapping = super.createRequestMappingHandlerMapping();
        requestMappingHandlerMapping.setUseTrailingSlashMatch(false);
        return requestMappingHandlerMapping;
    }

    @Bean(name = "messageSource")
    public MessageSource configureMessageSource() {
        // default message source
        ReloadableResourceBundleMessageSource defaultMessageSource = new ReloadableResourceBundleMessageSource();
        defaultMessageSource.setBasename("classpath:i18n/messages");
        defaultMessageSource.setDefaultEncoding("UTF-8");
        defaultMessageSource.setCacheSeconds(5000);

        return defaultMessageSource;
    }

    @Bean
    public LocaleResolver localeResolver() {
        CookieLocaleResolver resolver = new CookieLocaleResolver();
        resolver.setDefaultLocale(new Locale("fr"));
        resolver.setCookieName("localeCookie");
        resolver.setCookieMaxAge(5000);
        return resolver;
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
        interceptor.setParamName("lang");
        registry.addInterceptor(interceptor);
    }

    @Bean
    public ClassLoaderTemplateResolver templateResolver() {
        ClassLoaderTemplateResolver result = new ClassLoaderTemplateResolver();
        result.setPrefix("/templates/");
        result.setSuffix(".html");
        result.setTemplateMode("HTML");
        result.setOrder(1);
        result.setCacheable(true);
        return result;
    }

    @Bean
    public SpringTemplateEngine templateEngine() {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(templateResolver());
        // templateEngine.addDialect(new SpringSecurityDialect());
        templateEngine.addDialect(new nz.net.ultraq.thymeleaf.LayoutDialect());
        return templateEngine;
    }

    @Bean
    public ThymeleafViewResolver viewResolver() {
        ThymeleafViewResolver thymeleafViewResolver = new ThymeleafViewResolver();
        thymeleafViewResolver.setTemplateEngine(templateEngine());
        thymeleafViewResolver.setCharacterEncoding("UTF-8");
        return thymeleafViewResolver;
    }

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

    @Override
    protected void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {

    }

    @Bean
    public MultipartResolver multipartResolver() {
        return new StandardServletMultipartResolver();
    }
}

在开发者控制台中,我在链接 http://localhost:8080/tsp/details_open.png 上有 404

我在徒劳地挣扎。除非我记错了,这与静态资源处理有关。

tsp 来自以下 application.yml 文件:

server:
  port: 8080
  servlet:
    context-path: /tsp

我做了一个单独的测试项目,隔离了我的 MvcConfig 问题

有什么帮助吗?

【问题讨论】:

标签: css spring-boot datatables thymeleaf


【解决方案1】:

我通过如下更新 MvcConfig 类解决了我的问题:

@Configuration
@EnableWebMvc
public class MvcConfig implements WebMvcConfigurer {

...
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler(
                "/img/**",
                "/webfonts/**",
                "/css/**",
                "/js/**")
                .addResourceLocations(
                        "classpath:/static/img/",
                        "classpath:/static/webfonts/",
                        "classpath:/static/css/",
                        "classpath:/static/js/");
    }

    @Bean
    public ClassLoaderTemplateResolver templateResolver() {
        ClassLoaderTemplateResolver result = new ClassLoaderTemplateResolver();
        result.setPrefix("/templates/");
        result.setSuffix(".html");
        result.setTemplateMode(TemplateMode.HTML);
        result.setOrder(1);
        result.setCacheable(false);
        return result;
    }
...
}

也就是说,我将WebMvcConfigurationSupport 更改为WebMvcConfigurer 并删除了无用的自定义代码。

奇怪的是,根据 spring 文档,应该自动加载静态文件夹......但它不是......这就是我添加资源处理程序的原因。

为了优化性能,我将所有 js/css/map 文件复制到本地。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-27
    • 2015-06-01
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 2018-07-08
    • 2020-10-31
    • 2015-12-09
    相关资源
    最近更新 更多