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。我说得够清楚了吗?谢谢你的帮助