带有thymleaf和<style>标签的jQuery数据表问题

问题描述

我的问题是我的页面上有一个jquery数据表,该数据表属于使用springboot 2.3.2.RELEASE以及Java 11和thymleaf的Web应用程序。

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

我的png文件如下:

Project directory structure

并在我的Configuration类中:

#include <signal.h>
#include <stdio.h>

volatile sig_atomic_t signaled = 0;
void signal_handler(int) { signaled = 1; }

int main() {
    signal(SIGINT,signal_handler);
    while (!signaled) {}
    printf("Signaled!\n");
}

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

我徒劳无功。除非我没有记错,否则它与静态资源处理有关。

tsp来自以下application.yml文件

@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();
    }
}

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

请帮忙吗?

解决方法

我通过如下更新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文档,应该自动加载静态文件夹...但是不是...这就是为什么我添加了resouce处理程序。

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