Spring Boot应用程序找不到webjar文件

时间:2018-01-26 16:18:16

标签: java spring spring-mvc spring-boot gradle

我在Spring Boot中有一个应用程序。我将依赖添加到gradle

    compile 'org.webjars:bootstrap:4.0.0'

然后我将其添加到HTML文件

    <link rel="stylesheet" href="/webjars/bootstrap/4.0.0/css/bootstrap.min.css"/>

HTML网页代码如下所示https://zapodaj.net/c19be4422007e.png.html 但CSS文件的地址不起作用https://zapodaj.net/680da5d8a0371.png.html

为什么会这样?显然在Spring Boot中只需添加依赖性,并且应该自动设置所有内容。

3 个答案:

答案 0 :(得分:0)

假设您正在使用maven。在你的pom.xml中添加

 <dependency>
        <groupId>org.webjars</groupId>
        <artifactId>bootstrap</artifactId>
        <version>3.3.7</version>
        <scope>runtime</scope>
    </dependency>

然后在你的html文件中,这是你应该如何引用webjar

<link rel="stylesheet" href="/webjars/bootstrap/3.3.7/css/bootstrap.css">

确保您的依赖关系groupId来自&#34; org.webjars&#34;

答案 1 :(得分:0)

我和您一样面临同样的问题。因此,在进行了一些研究之后,我发现WebJars特别与Spring无关,因此我们必须使用Spring MVC为那些客户端依赖项定义一些映射。

让我们假设您的pom.xml中具有此依赖项:

<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>bootstrap</artifactId>
    <version>4.3.1</version>
</dependency>

因此,请尝试将此配置添加到您的项目中,我认为它会起作用。

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

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

然后在HTML中引用您的代码:

<link rel="stylesheet" href="/webjars/bootstrap/4.3.1/css/bootstrap.css">

或者在您的百里香中更好:

<link th:href="@{/webjars/bootstrap/4.3.1/css/bootstrap.min.css}" rel="stylesheet"  />

答案 2 :(得分:0)

如果其他使用Spring Boot 2的人看到此消息-使用Spring Security,我也遇到了同样的问题,因此必须进行一些更改:

  1. 在实现@EnableWebMvc的配置类中删除了WebMvcConfigurer,以便带有@SpringBootApplication注释的主类可以自动配置

  2. 在与上述相同的配置类中,覆盖addResourceHandlers()方法:

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
      registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/").resourceChain(false);
    }
    
  3. 在扩展了WebSecurityConfigurerAdapter的Spring Security配置类中,我必须做一些事情:

    a。让Spring通过删除@EnableWebSecurity

    自动配置安全性

    b。覆盖configure(HttpSecurity http)方法,就像您可能已经做的那样,添加了允许/webjars/**

    的蚂蚁匹配器
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/webjars/**").permitAll() 
      .requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
    

    c。覆盖configure(WebSecurity webSecurity)方法:

    @Override
    public void configure(WebSecurity webSecurity) throws Exception {
        webSecurity.ignoring().antMatchers("/webjars/**");
    }