Gwt Css和uibinder无混淆不起作用

时间:2015-09-14 18:19:55

标签: css gwt obfuscation

我有一个带配置属性的Gwt小部件库:

<set-configuration-property name="CssResource.style" value="stable-notype"/>

预计将保留原始css名称,然后是css文件(示例)

.invader {
    width: 400px;
    height: 400px;
    background-color: #DBDBDB;
}

.invader .button {
    background-image: url('merged.png');
    width: 64px;
    height: 64px;
    background-position: 0px 64px;
    background-color: #BA6622;
}

之后,生成的css资源

interface WidgetStyle extends CssResource {
  String button();
  String invader();
}

当我在WidgetStyle实例(和/或)上调用ensureInjected()时,以编程方式使用样式/在ui:binder中使用例如。

<ui:style src="WidgetStyle.css" field="style" />
<g:HTMLPanel styleName="{style.invader}" ui:field="panel" />

然后,在浏览器中的结果html文件中,而不是一个注入的css样式,我有四个定义的选择器:

.org-invader-widget-client-WidgetStyle-invader;
.org-invader-widget-client-WidgetStyle-invader .org-invader-widget-client-WidgetStyle-button;
.org-invader-widget-client-MyWidget_UIImpl_GenCss_style-invader;
.org-invader-widget-client-MyWidget_UIImpl_GenCss_style-invader .org-invader-widget-client-MyWidget_UIImpl_GenCss_style-button;

这些对使用不同的名称复制上面的样式。我看到第二对来自&#34; MyWidget拥有&#34;样式,但是如何强制所有应用程序只使用我在.css文件中定义的那些css类而不进行任何混淆?

此外,第二对css-classess未能正确应用。只应用第一个,第二个不匹配。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

好的,我发现用

访问css
<ui:style ... />

注入样式和css类可能会获得额外的前缀,正确的方法是使用ClientBundle访问样式

<ui:with ... >

默认情况下,混淆覆盖不起作用&#39;在* .gwt.xml中的SuperDevMode中,如果我是对的,则必须使用DevMode运行参数进行配置。