我是 GWT 的新手;我正在构建一个小型示例应用程序。我有几个 CSS 文件。我能够成功地使用 ClientBundle 和 CssResource 为我的 UiBinder 脚本中定义的元素分配样式。
现在我想更进一步,使用@def css-rule 引入CSS 常量。当我定义常量并在同一个 CSS 文件中使用它时,@def 非常有用。但是我不能在另一个 CSS 文件中使用它。当我尝试使用 @eval 规则来评估现有常量时,编译器会抛出一个 execption:“无法对非静态方法进行静态引用”。
这是我正在尝试做的一个例子:
ConstantStyle.css
@def BACKGROUND red;
ConstantStyle.java
package abc;
import ...;
interface ConstantStyle extends cssResource {
String BACKGROUND();
}
MyStyle.css
@eval BACKGROUND abc.ConstantStyle.BACKGROUND();
.myClass {background-color: BACKGROUND;}
MyStyle.java
package abc;
import ...;
interface ConstantStyle extends cssResource {
String myClass;
}
我的资源.java
package abc;
import ...;
interface MyResources extends ClientBundle {
@Source("ConstantStyle.css")
ConstantStyle constantStyle();
@Source("MyStyle.css")
MyStyle myStyle();
}
提前致谢!
最佳答案
将"ConstantStyle.css"
添加到ClientBundle
中的@Source
注释中,如下所示:
package abc;
import ...;
interface MyResources extends ClientBundle {
@Source("ConstantStyle.css")
ConstantStyle constantStyle();
@Source({"ConstantStyle.css", "MyStyle.css"})
MyStyle myStyle();
}
它的作用与 MyStyle.css 中的 @import "ConstantStyle.css"
相同(我相信 GWT 忽略了 @import
除外)。
你不需要@eval。
关于css - GWT - CSS 中常量的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2641747/