页面未加载

问题描述 投票:0回答:1

我有一个 springboot 应用程序。我对百里香依赖。有以下控制器类:

@Controller
public class OSController {

    @GetMapping("/search")
    public String getSearchForm() {
        return "index";
    }
}

index.html 存储在资源中的模板下。但页面未加载。它只是返回页面上的字符串“index”。我在我的应用程序中使用以下依赖项:

    // spring-boot
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-validation'
    implementation 'org.springframework.boot:spring-boot-configuration-processor'
    implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'

我怀疑 oauth 可能是导致问题的原因。在我的安全配置中,我允许在没有身份验证的情况下显示此特定页面。

@Bean
    public CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowedOrigins(List.of("*"));
        configuration.setAllowedMethods(List.of("*"));
        configuration.setAllowedHeaders(List.of("*"));
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }


    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws Exception {
        return httpSecurity
                .headers().frameOptions().disable()
                .and()
                .csrf(AbstractHttpConfigurer::disable)
                .cors()
                .and() // added for CORS size use CorsConfiguration source bean config
                .authorizeRequests()
                .antMatchers("/auth/**").permitAll()
                .antMatchers("/search**").permitAll()
                .antMatchers("/**", "/auth/logout").authenticated()
                .and()
                //.userDetailsService(jpaUserDetailsService)
                .oauth2ResourceServer().jwt(jwt -> jwt.jwtAuthenticationConverter(new CustomJwtAuthConverter()))
                .and()
                //.httpBasic(Customizer.withDefaults())
                .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
                .build();
    }
spring-boot thymeleaf spring-thymeleaf
1个回答
0
投票

您需要将以下内容添加到配置文件中

@Configuration
@EnableWebMvc
@ComponentScan
 public class SpringWebConfig
    extends WebMvcConfigurerAdapter implements ApplicationContextAware {

  /* **************************************************************** */
/*  THYMELEAF-SPECIFIC ARTIFACTS                                    */
/*  TemplateResolver <- TemplateEngine <- ViewResolver              */
/* **************************************************************** */

@Bean
public SpringResourceTemplateResolver templateResolver(){
    // SpringResourceTemplateResolver automatically integrates with Spring's own
    // resource resolution infrastructure, which is highly recommended.
    SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
    templateResolver.setApplicationContext(this.applicationContext);
    templateResolver.setPrefix("/WEB-INF/templates/");
    templateResolver.setSuffix(".html");
    // HTML is the default value, added here for the sake of clarity.
    templateResolver.setTemplateMode(TemplateMode.HTML);
    // Template cache is true by default. Set to false if you want
    // templates to be automatically updated when modified.
    templateResolver.setCacheable(true);
    return templateResolver;
}

@Bean
public SpringTemplateEngine templateEngine(){
    // SpringTemplateEngine automatically applies SpringStandardDialect and
    // enables Spring's own MessageSource message resolution mechanisms.
    SpringTemplateEngine templateEngine = new SpringTemplateEngine();
    templateEngine.setTemplateResolver(templateResolver());
    // Enabling the SpringEL compiler with Spring 4.2.4 or newer can
    // speed up execution in most scenarios, but might be incompatible
    // with specific cases when expressions in one template are reused
    // across different data types, so this flag is "false" by default
    // for safer backwards compatibility.
    templateEngine.setEnableSpringELCompiler(true);
    return templateEngine;
}

@Bean
public ThymeleafViewResolver viewResolver(){
    ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
    viewResolver.setTemplateEngine(templateEngine());
    return viewResolver;
}
}

您可以参考 thymeleaf + spring 配置中的整个配置https://www.thymeleaf.org/doc/tutorials/3.1/thymeleafspring.html

© www.soinside.com 2019 - 2024. All rights reserved.