在GWT中需要应用程序范围的CSS常量

在GWT中需要应用程序范围的CSS常量,gwt,uibinder,cssresource,Gwt,Uibinder,Cssresource,我想在GWT CssResource中将一些颜色定义为常量,并在整个应用程序中使用这些常量;但我不知道怎么做 我会告诉你我试过什么。我创建了ClientBundle和CssResource,如下所示: public interface Resources extends ClientBundle { public interface MyStyle extends CssResource { String JUNGLEGREEN(); String example();

我想在GWT CssResource中将一些颜色定义为常量,并在整个应用程序中使用这些常量;但我不知道怎么做

我会告诉你我试过什么。我创建了ClientBundle和CssResource,如下所示:

public interface Resources extends ClientBundle {
  public interface MyStyle extends CssResource {
    String JUNGLEGREEN();
    String example();
    ...
  }
  @Source("Resources.css")
  MyStyle css();
}
我在Resources.css中定义了一些:

@def JUNGLEGREEN #1F3D0A;
在Resources.css中,我使用以下常量:

.example { color:JUNGLEGREEN; }
我不知道如何在其他CSS文件和UiBinder模板中重用这些常量。我想在其他UiBinder文件中执行此操作,例如LoginView.ui.xml:

<ui:with field='resources' type='com.example.Resources' />
<ui:style>
  .mainPanel {
    background:{resources.css.JUNGLEGREEN};
    ...
  }
</ui:style>

.主面板{
背景:{resources.css.JUNGLEGREEN};
...
}

…但它似乎没有编译。你知道我怎样才能实现我的目标吗?

你应该能够使用

<ui:style>
  @IMPORT url("../../../global.css");
  .mainPanel {
    background:{resources.css.JUNGLEGREEN};
    ...
  }
</ui:style>

@导入url(“../../../global.css”);
.主面板{
背景:{resources.css.JUNGLEGREEN};
...
}
我们就是这样做的:

  • 我们将所有常量属性放在
    constant.css
    文件中
  • 在每个ui.xml文件中,可以通过以下方式引用这些常量:
  • 创建
    ClientBundle
    CssResource
    以检索定义的常量
-使用
@eval
注释访问常量

<ui:style>
    @eval green com.gwt.client.widget.test.MyResources.INSTANCE.constants().junglegreen();

    .someClass {
        color: green;
    }
</ui:style>

@eval green com.gwt.client.widget.test.MyResources.INSTANCE.constants().junglegreen();
.某个班级{
颜色:绿色;
}

我知道如何处理常量的唯一方法是不引用css文件本身。

我知道这个答案可能有点晚了,但可能对某人有所帮助。我遇到了同样的问题,并通过添加以下内容来解决:

Resources.css()


我在工厂里添加了它,但在几个地方试用过,不管我把它放在哪里,它都能用。

谢谢Sudhir。可悲的是,这行不通。doco()说,@import语句只适用于其他cssResource,而不适用于运行时的URL,因为在这些情况下可以使用.gwt.xml或StyleInjector。”Resources.css不是cssResource吗?编译时导入就是我要说的…谢谢你,zOObs。您的解决方案有一部分是这样的,但我不喜欢CSS文件的路径是相对于ui.xml文件的。一定有更好的方法。添加了第二种方法。请参阅我的初始答案。感谢z00bs的第二种方法。我就快到了,但我使用了类似于…MyResources.INSTANCE.Constants.junglegreen()的东西,导致了非常隐秘的错误消息…在不同的线程中,这个答案可能会有所帮助:
<ui:style src="../../resources/css/constants.css">
    .myStyle {
        color: orange;
    }
</ui:style>
@def junglegreen #1f3d0a;
public interface MyResources extends ClientBundle {

    public static final MyResources INSTANCE = GWT.create(MyResources.class);

    public interface Constants extends CssResource {

        String junglegreen();
    }

    Constants constants();
}
<ui:style>
    @eval green com.gwt.client.widget.test.MyResources.INSTANCE.constants().junglegreen();

    .someClass {
        color: green;
    }
</ui:style>