GWT / UIBinder如何使用<ui:style> </ui:style>查找主css文件

时间:2010-09-16 15:33:19

标签: css gwt

我正在尝试使用UIBinder构建一个gwt网站。它很酷,它有效,但我对ui:style有问题。

我的项目被mavenized(我使用gwt-maven-plugin原型)。

Application.html和Application.css文件位于src / main / resources / com / foo / bar / public。

我正在尝试设置样式的页面位于src / main / java / com / foo / bar / client / Page1.java和Page1.ui.xml。

我可以使用css文件,如果它与:

在同一个包中
<ui:style src="Page1.css" />

但是我想定位Application.css(所以我可以避免在每个包中的每个css文件中使用相同的样式)

我尝试了不同的相对路径,而且找不到Application.css。

那里有人有同样的问题吗,并且愿意帮助我吗?

谢谢!

3 个答案:

答案 0 :(得分:5)

如果您的应用程序css在ClientBundle的其他位置引用,您可以完全使用并避免路径问题。请参阅Using an external resource

答案 1 :(得分:1)

老问题,但是; 我简单地引用了这样的全局样式,没有ui:style指令:

g:TabPanel ui:field =“tabPanel”width =“100%”height =“90%”styleName =“nameInMyMainCss”

这相当于调用setStyleName(“nameInMyMainCss”);在匹配的java类中。

答案 2 :(得分:0)

您应该考虑这是否真的是您想要做的。 UiBinder通过ClientBundle机制使用css,该机制优化了css,模糊了样式名称,然后将样式作为已编译的javascript代码的一部分嵌入。如果您还以传统方式使用相同的css文件(带有<link>标记),那么您需要用户两次下载相同的css规则。在实践中,滞后可能不会太明显,但原则上它有点差。

无论如何这是不可能的,因为ClientBundle(以及UiBinder)仅适用于源文件夹中的css文件。正如gk5885所说,您可以创建一个ClientBundle,并通过将其包含在UiBinder模板中来在项目范围内使用它。您应该考虑将尽可能多的css移动到此系统中。