对于自定义 Vaadin 7 组件,我收到了一个拒绝发布的文件请求,该文件在 css 中引用了一个图像:
StyleSheet("mycomponent.css")
@JavaScript( { "mycomponent1.js", "mycomponent2.js"})
public class MyComponent extends AbstractJavaScriptComponent {
//...
}
在 mycomponent.css 我有
background-image: url(mycomponent-bg.png);
Vaadin 告诉我:
拒绝未发布文件的已发布文件请求:mycomponent-bg.png
查看 Vaadin 7 中的PublishedFileHandler它说:
如果资源先前已通过调用 LegacyCommunicationManager#registerDependency(String, Class) 注册,则从类路径提供连接器资源。通过仅接受已显式注册的资源名称来防止从类路径发送任意文件。目前只能通过在连接器类上包含 {@link JavaScript} 或 {@link StyleSheet} 注释来注册资源。
在组件中进行手动注册不起作用:
LegacyCommunicationManager lcm = new LegacyCommunicationManager(this.getSession());
lcm.registerDependency("mycomponent-bg.png", this.getClass()); // 1.try
lcm.registerDependency("mypath/mycomponent-bg.png", this.getClass()); // 2.try
问题:在 Vaadin 7 中使用带有图像的 css 样式自定义组件的正确方法是什么?或者:如何将任意文件添加到依赖项?