Gwt @外部ClientBundle中要在UiBinder中使用的ImageResource的url

Gwt @外部ClientBundle中要在UiBinder中使用的ImageResource的url,gwt,uibinder,Gwt,Uibinder,当ImageResource和UiBinder不在同一个包中时,是否可以在UiBinder中使用@url引用ImageResource 例如: 我的共享ClientBundle: package com.myproject.client.resources; class SharedResources extends ClientBundle { ImageResource myImage(); } 以及包com.myproject.client中的UiBinder文件。另一个包 &

ImageResource
UiBinder
不在同一个包中时,是否可以在UiBinder中使用
@url
引用
ImageResource

例如:

我的共享
ClientBundle

package com.myproject.client.resources;

class SharedResources extends ClientBundle {
    ImageResource myImage();
}
以及包com.myproject.client中的UiBinder文件。另一个包

<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>

@url myImg{插入对res.myImage的引用}
.班级{
背景:myImg无重复中心#D7D6;
宽度:21px;
}
我知道我可以将CSS移动到
com.myproject.client.resources
,然后我就可以轻松访问
myImage
(因为CSS和
myImage
将在同一个包中),但是我更愿意将CSS保存在UiBinder中,并从UiBinder中重用共享的
myImage

这里有一个关于这个问题的讨论,但它没有回答我的问题:

我遇到了同样的问题,我的解决方案是使用
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>

@url myImg重镜像
.班级{
背景:myImg无重复中心#D7D6;
宽度:21px;
}

我保留了
SharedResources
引用,只是为了使用您的示例进行说明,但在本例中没有使用它。

我可以看到这样做的两种方式。首先是。第二种方法是简单地创建一个CSSResource类,并在UIBinder标记中引用ClientBundle,如上面的链接所示。这是您的目标吗?我已经尝试了
@url res.myImage
,但它无法编译。这就是您建议的解决方案吗?不是。我的建议是将您的客户端包拉入UI活页夹,就像我链接的示例中那样<代码>。这将允许您直接在UIBinder中引用
ImageResource
。然而,如果你想使用一个类,你可以定义一个使用你的图像的
CSSResource
,并在你的
HTMLPanel
中使用这个类。是的,我明白你的意思,但我不想定义另一个CSSResource。我的目标是将CSS类保持在UiBinder中。我想使用外部ClientBundle中的ImageResource。我说得够清楚了吗?谢谢你的帮助