css - 在 UiBinder 中设置样式时出现乱码 css 名称

标签 css gwt uibinder

对于我的 GWT 应用程序,我想在 FlexTable 中显示所选行,为此,我向特定行添加样式:

@UiField FlexTable productTable;
int row;
[...]
/* select row */
productTable.getRowFormatter().addStyleName(row, "row-selected");

在相应的ui.xml文件中,我添加了如下样式:

ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui"
xmlns:u="urn:import:myapplication.client.ui">
<ui:style>
    tr.row-selected {
        background: #92C1F0;
    }
</ui:style>
<g:VerticalPanel>
    <g:ScrollPanel>
        <g:FlexTable ui:field="productTable" width="100%" height="100%">
        </g:FlexTable>
    </g:ScrollPanel>
</g:VerticalPanel>
</ui:UiBinder> 

这不起作用,而在我的全局 .css 文件中添加样式却可以。在 FireBug 中,我看到名称 tr.row-selected 被乱码成这样:tr.GB1HWLGEI

为什么这不起作用?它应该如何起作用?

最佳答案

UiBinder uses ClientBundle for ui:style ,因此 CssResource 的规则和语法/功能适用。

这意味着您的 CSS 类名称将被混淆(以便它们是唯一的,并且不会与另一个 CssResource 或外部样式表中的同名 CSS 类冲突)。

在您的情况下,您可以定义一个 CssResource 接口(interface)并声明 ui:style 来扩展该接口(interface)并将实例注入(inject)到 @UiField;所以你可以在你的 addStyleName 中使用混淆的样式;如http://code.google.com/webtoolkit/doc/latest/DevGuideUiBinder.html#Programmatic_access
或者您可以在 ui:style 中使用 @external 来禁用 CSS 类的混淆;请参阅http://code.google.com/webtoolkit/doc/latest/DevGuideClientBundle.html#External_and_legacy_scopes .

关于css - 在 UiBinder 中设置样式时出现乱码 css 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7854520/

相关文章:

html - tds 是否有等效的 cols 属性?

html - 高度参数不适用于我的 HTML 图像之一

gwt - 如何在 PlayN 的 Gin 模块中使用 Guice 绑定(bind)?

gwt - 运行 birt 时出现 error.CannotStartupOSGIPlatform 问题

GWT - 如何在 uibinder xml 文件中定义布局层次结构之外的小部件

gwt - UiBinder 中的通用小部件

html - CSS:如何摆脱默认窗口 "padding"?设置为 100% 宽度的元素未到达窗口的边界

javascript - 延迟后如何淡入元素

css - GWT - 设置全局 css 样式的最佳方式

css - GWT 树造型