我想使用UiBinder(UiRenderer)为CellWidget生成一个Cell。我为生成单元格所做的工作是在 MyCell.java :
中public class MyCell implements AbstractCell<MyDto> {
public interface Resources extends ClientBundle {
@Source({Css.DEFAULT_CSS })
Css css();
}
public interface Css extends CssResource {
String DEFAULT_CSS = "test/MyStyle.css";
String test();
}
interface MyUiRenderer extends UiRenderer {
void render(SafeHtmlBuilder sb, String name, SafeStyles styles);
}
private static MyUiRenderer renderer = GWT.create(MyUiRenderer.class);
Resources resources = GWT.create(Resources.class);
@Override
public void render(SafeHtmlBuilder safeHtmlBuilder, MyDto model) {
SafeStyles style = SafeStylesUtils.fromTrustedString(resources.css().test().toString());
renderer.render(safeHtmlBuilder, model.getName(), style);
}
}
我的 MyCell.ui.xml 文件如下所示:
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'>
<ui:with field="name" type="java.lang.String" />
<ui:with field='styles' type='com.google.gwt.safecss.shared.SafeStyles'/>
<div style="{styles}"><ui:text from="{name}" /></div>
</ui:UiBinder>
MyStyle.css :
.test {
background-color: red;
font-size: 20px;
display: flex;
...
}
当我运行我的代码时,我收到以下错误:
[DEBUG] [mobile] - Rebinding test.client.app.MyCell.MyUiRenderer
[DEBUG] [mobile] - Invoking generator com.google.gwt.uibinder.rebind.UiBinderGenerator
[ERROR] [mobile] - java.lang.String required, but {styles} returns com.google.gwt.safecss.shared.SafeStyles: <div style='{styles}'> (:9)
[ERROR] [mobile] - Deferred binding failed for 'test.client.app.MyCell.MyUiRenderer'; expect subsequent failures
[ERROR] [mobile] - (GWT.java:72) 2014-06-08 17:15:05,214 [FATAL] Uncaught Exception:
然后我尝试了这个:
<ui:with field="styles" type="java.lang.String" />
在我的UiBinder中,但它不起作用。
如何在我的UiRenderer中使用CssResource的css样式?
答案 0 :(得分:2)
<div style="{styles}">
这里有两个问题。首先,为了更改元素的样式,您有两个选项,将style属性设置为包含特定属性,或者将class属性设置为指向您在CSS中定义的类。所以,你真的想在这里设置class
,而不是style
。
其次,你创建了一个名为“test”的css类,但是这里只分配了整个界面的样式。相反,引用styles.test:
<div class="{styles.test}" />
编辑:你可能遗失的最后一篇文章(但由于“这不起作用”是如此模糊,我不知道这是否是你的实际问题):我没有看到对ensureInjected()
的任何调用在你的例子中。在使用之前,请务必在Css
实例上调用此方法。
答案 1 :(得分:1)
你必须在xml中的样式之后放入.asString:
# -*- coding: utf-8 -*-
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn import tree
Model_Dev_Val = pd.read_excel("data2.xlsx")
target = Model_Dev_Val[['source_2']]
model_train, model_test, y_train, y_test = train_test_split(Model_Dev_Val, target,test_size = 0.5, random_state = 40,stratify = target)
clf = tree.DecisionTreeClassifier()
clf = clf.fit( model_train,y_train)