es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La primavera no está cargando CSS y muestra un error 404 cuando se carga la página.

Estoy ejecutando una aplicación web Spring (no Boot) y está encontrando correctamente mis vistas JSP, pero mi CSS no se encuentra por alguna razón. Para ser claro, la página se carga con los elementos necesarios, pero no se aplica ningún estilo CSS de las clases en mis archivos .css. La estructura del archivo CSS que estoy intentando usar es src/main/resources/css/style.css.

A continuación se muestra el código relevante de mi clase AppConfig:

public class AppConfig implements WebMvcConfigurer {
    ...
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/css/**")
                .addResourceLocations("/css/");
    }
    ...
}

Y el encabezado JSP:

<link type="text/css" rel="stylesheet" href="${pageContext.request.contextPath}/css/style.css">

Ya he revisado algunas otras preguntas sobre este tema y no he tenido suerte. Varios de ellos aconsejaban revisar el archivo de configuración de Spring Security para asegurarse de que se otorgue permiso para todas las solicitudes que utilizan el archivo de recursos, pero según lo que puedo ver, no debería estar prohibiendo que se cargue el CSS:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Autowired
    private UserService userService;

    @Bean
    public BCryptPasswordEncoder encoder() {
        return new BCryptPasswordEncoder();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(authenticationProvider());
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
    }

    @Bean
    public DaoAuthenticationProvider authenticationProvider() {
        DaoAuthenticationProvider authenticationProvider = new DaoAuthenticationProvider();
        authenticationProvider.setPasswordEncoder(encoder());
        authenticationProvider.setUserDetailsService(userService);

        return authenticationProvider;
    }
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Basándose en el código proporcionado, parece que el problema puede estar en el método addResourceLocations en la clase AppConfig. Actualmente especifica la ubicación de los archivos CSS como /css/, que es una ruta relativa desde el directorio raíz del proyecto. Sin embargo, el archivo style.css se encuentra en src/main/resources/css/, que es un directorio dentro del classpath.

    Para solucionar este problema, puedes actualizar el método addResourceLocations para especificar una ubicación del classpath en su lugar. Por ejemplo, puedes usar el prefijo classpath: para indicar que los archivos CSS están ubicados dentro del classpath:

    registry.addResourceHandler("/css/**")
    .addResourceLocations("classpath:/css/");

    Esto asegurará que los archivos CSS estén ubicados correctamente y sean cargados por la aplicación web.

Comments are closed.