0

为什么我不能将自定义 CSS 样式应用于单个 TextBox?

我正在尝试在单个 TextBox 上设置一些错误样式。以下实现有什么问题?

在里面:

static final String STYLES = ErrorRes.INSTANCE.css().style();

@UiField TextBox box;
box.setStylePrimaryName(STYLES);

资源接口

interface ErrorRes extends ClientBundle {
    static final ErrorRes INSTANCE = GWT.create(ErrorRes.class);

    @Source("Error.css")
    Style css();

    interface Style extends CssResource {
        @ClassName("gwt-TextBox-error")
        String style();
    }
}

错误.css

.gwt-TextBox-error {
     border: 1px solid red !important;
}
4

1 回答 1

2

如果您想在小部件上获取 gwt-TextBox-error 样式名称,则需要设置box.setStylePrimaryName("gwt-TextBox");- 默认情况下。当发生错误时,使用box.setStyleDependentName("error", true);HTML 将是class="gwt-TextBox gwt-TextBox-error"。并清除错误样式,使用box.setStyleDependentName("error", false);

或者

您可以以相同的方式使用addStyleName("gwt-TextBox-error")removeStyleName("gwt-TextBox-error")

- -更新 - -

因此,我尝试运行您的案例,并且效果很好。首先,您需要在运行时将 css 从资源注入页面:

ErrorRes.INSTANCE.css().ensureInjected();

我在开始时使用它onModuleLoad()

然后,添加错误样式使用: box.addStyleName(STYLES);box.removeStyleName(STYLES);删除它。

You can't use pair setStylePrimaryName() and setStyleDependentName() with bundled css becouse css name will be obfuscated.

于 2013-03-12T14:26:29.003 回答