当ImageResource
和@url
不在同一个包中时,是否可以在UiBinder中引用ImageResource
UiBinder
?
例如:
我的分享ClientBundle
:
package com.myproject.client.resources;
class SharedResources extends ClientBundle {
ImageResource myImage();
}
并且,com.myproject.client包中的UiBinder文件。 anotherpackage
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<ui:with field="res" type="com.myproject.client.resources.SharedResources"/>
<ui:style>
@url myImg {insert reference to res.myImage}
.theClass {
background: myImg no-repeat center center #d7d6d6;
width: 21px;
}
</ui:style>
<g:HTMLPanel styleName="{style.theClass}"/>
</ui:UiBinder>
我知道我可以将CSS移动到com.myproject.client.resources
然后我可以轻松访问myImage
(因为CSS和myImage
将在同一个包中),但我我希望将UiBinder中的CSS 保留在内,并重用UiBinder中的共享myImage
。
这里有关于这个问题的讨论,但它没有回答我的问题: https://groups.google.com/forum/#!topic/google-web-toolkit/ExOJAEfQmkY
答案 0 :(得分:0)
我遇到了同样的问题,我的解决方案是使用ui:image
。此解决方案不会重复使用并直接引用ClientBundle,就像我认为您想要的那样,但它可以让您不移动CSS,或将图像复制到文件夹,或创建新的ClientBundle。
代码如下:
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<ui:with field="res" type="com.myproject.client.resources.SharedResources"/>
<ui:image field="resImage" src="../resources/image.png" />
<ui:style>
@url myImg resImage
.theClass {
background: myImg no-repeat center center #d7d6d6;
width: 21px;
}
</ui:style>
<g:HTMLPanel styleName="{style.theClass}"/>
</ui:UiBinder>
我保留SharedResources
参考仅用于说明您的示例,但在这种情况下不会使用它。