Dropwizard,为同一个URI提供两个资产

时间:2015-02-01 08:10:36

标签: java html css assets dropwizard

如何在Dropwizard中为同一个URI提供两个assets文件夹。当使用相同的URI名称时,目前只提供第一个。

我正在使用(在我的主应用程序类中)注册AssetsBundle:

public void initialize(Bootstrap<DummyFrontendConfiguration> bootstrap) {
    bootstrap.addBundle(new AssetsBundle("/assets1", "/public", null, "assets1"));
    bootstrap.addBundle(new AssetsBundle("/assets2", "/public", null, "assets2"));
    bootstrap.addBundle(new ViewBundle());
}
资产1中的

Css文件(main.css):

h2{
    color: red;
} 
资产2中的

Css文件(main2.css):

h4{
    color: green;
}

在html模板头:

<link rel="stylesheet" type="text/css" href="public/stylesheets/main.css">
<link rel="stylesheet" type="text/css" href="public/stylesheets/main2.css">

在html模板正文中:

<h2>This should be red</h2>
<h4>This should be green</h4>

不幸的是,第二个css文件(main2.css)在html页面呈现期间无法加载(404 - 未找到),有什么想法吗?

1 个答案:

答案 0 :(得分:0)

assets模块的设计不是以这种方式运行的。在引擎盖下它正在呼唤:

environment.servlets().addServlet(assetsName, createServlet()).addMapping(uriPath + '*');

两个servlet都无法映射到同一路径。您可以通过将其中一个“公共”映射切换为另一个路径(例如“public2”)来解决此问题。

如果确实需要将资源完全分开,可能需要考虑在构建中引入另一个步骤(通过maven或ant),将资产合并到一个目录结构中进行部署。