Dropwizard版本1.3.0-rc6
关于提供静态内容的大多数文档都适用于旧版本,甚至Dropwizard Manual中的更新文档也不适用于我。
我想提供一个静态的html文件。我已经修改了这些资产所在的结构/路径,但是在我的环境中无法完全获得配置。
静态内容位于以下结构下
src/main/ ├── java │ └── org │ └── com │ └── query │ │ ├── rest │ │ ├── api │ │ ├── cli │ │ ├── core │ │ ├── db │ │ ├── health │ │ ├── resources │ │ ├── tasks │ │ └── views │ ├── resources │ ├── META-INF │ │ ├── bin-license-notice │ │ │ └── licenses │ │ └── services │ └── rest │ ├── ftl │ └── mustache └── webapp ├── WEB-INF │ └── views │ └── jsp └── resources └── core ├── css └── js
multiFileUpload.html
在src/main/webapp/resources/core
dir里面,这最终是我想要服务的。然而,这与src/main/resources/assets/
的dropwizard标准不同。
我需要扩展构造函数来指定单个AssetBundles,因为我计划有多个AssetBundle
实例。这就是我在应用程序初始化方法中的内容。
@Override
public void initialize(Bootstrap<HelloWorldConfiguration> bootstrap) {
bootstrap.addBundle(new AssetsBundle("/webapp/resources/core/*", "/", null, "/MultiFileUpload.html"));
}
我还在应用程序运行方法中设置了urlPattern。 environment.jersey().setUrlPattern("/rest/*");
我的config.yml中的根路径是rootPath:/rest/*
我有一个端点,应该提供.html文件。 localhost:port/rest/upload/multiFile
我几乎可以肯定其中一条路径是不正确的,但我已经尝试根据文档示例更改它们,但没有任何运气。
我刚刚在一个类似的问题上发布了一个answer。我也会在这里列出它们,
assets
目录位于${Project Root}/src/main/resources
目录
bootstrap.addBundle(new AssetsBundle("/assets/", "/"));
environment.jersey().setUrlPattern("/*"); /*this line should be removed*/
您需要将dropwizard-assets
包含在项目的依赖项中。
为了便于参考,我创建了一个带静态资产的sample project。