Spring boot webjars 未生成,返回 Http 406

Posted

技术标签:

【中文标题】Spring boot webjars 未生成,返回 Http 406【英文标题】:Spring boot webjars not generated, Http 406 returned 【发布时间】:2019-01-21 22:28:04 【问题描述】:

由于某种原因,引导 webjar 没有被复制到目标中,因此无法找到它们。

pom.xml

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.4.RELEASE</version>
</parent>

...

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

资源处理程序:

@Configuration
@EnableWebMvc
public class WebConfiguration implements WebMvcConfigurer 

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) 
    registry.addResourceHandler("/resources/**").addResourceLocations("/WEB-INF/resources/*");
    registry.addResourceHandler("/resources/").addResourceLocations("/resources/");
    registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");


在我的静态resources中的某个地方

...
<script src="webjars/bootstrap/4.1.3/js/bootstrap.min.js"></script>
...

/target 中没有生成任何内容 知道我错过了什么吗? 我花了几个小时在这上面,也到达了谷歌搜索的第二页。

【问题讨论】:

这一切似乎都应该有效。但这与您需要为 Spring Boot 做的事情并不完全一致。签出:webjars.org/documentation#springboot @JamesWard 我仔细检查了您发送的链接。结果完全相同。我还使用新的依赖项更改为 version agnostic 方法,但它的作用完全相同。你说的不一致是什么意思? 删除 WebConfiguration,Spring Boot 已经处理了所有这些,您基本上是在使用该配置禁用部分 Spring Boot pautoconfiguration。 【参考方案1】:

我会回答我自己的问题。

我永远不会说这可能是个问题,但显然 @GetMapping 注释破坏了我的 UI。我仍然没有弄清楚是什么问题。我刚刚找到了解决方案。

所以我使用Thymeleaf 来解决我的观点

@Controller
public class ViewController 

    @GetMapping("/")
    public String home() 
        return "/home";
    

当我使用传统的 Restful 控制器时显然会发生冲突

@RestController(value = "/face-detection")
public class FaceDetectController 

@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE) 
...

这首单曲@GetMapping 破坏了整个 UI。 我所要做的只是在映射中添加/

@GetMapping(value ="/", produces = MediaType.APPLICATION_JSON_VALUE)

整个事情神奇地开始起作用了。 github深处某处的类似问题: https://github.com/springfox/springfox/issues/1647

【讨论】:

以上是关于Spring boot webjars 未生成,返回 Http 406的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot Sample 011之spring-boot-web-webjars

Spring Boot Sample 011之spring-boot-web-webjars

Spring Boot 中使用WebJars

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

spring boot 静态资源的映射规则 webjars 资源映射

Spring Boot + Thymeleaf + webjars Bootstrap 4