GWTCellTableのカスタムセルレンダラーを作成しようとしています。セル内にCSSスタイルを設定しようとしていますが、何らかの理由でレンダリングされません。
これが私のカスタムセルレンダラーです
static class MyStringCell extends AbstractCell<String> implements Cell<String> {
interface UncheckedStringTemplate extends SafeHtmlTemplates {
@SafeHtmlTemplates.Template("<div style=\"{0}\"><input type=\"checkbox\"/>{1}</div>")
SafeHtml cell(SafeStyles styles, SafeHtml vendorName);
}
private static UncheckedStringTemplate uncheckedStringTemplate = GWT.create(UncheckedStringTemplate.class);
@Override
public void render(com.google.gwt.cell.client.Cell.Context context, String value, SafeHtmlBuilder sb) {
if (value == null) {
return;
}
SafeHtml vendorName = SafeHtmlUtils.fromString(value);
SafeStyles styles = SafeStylesUtils.fromTrustedString("noaccess;");
SafeHtml rendered = uncheckedStringTemplate.cell(styles, vendorName);
sb.append(rendered);
}
}
そして、これが私がレンダラーと呼んでいるところです
Column<MyObject, String> userNameSelectedColumn = new Column<MyObject, String>(new MyStringCell()) {
@Override
public String getValue(MyObject myObject) {
return myObject.getName();
}
};
vendorPermissions.addColumn(userNameSelectedColumn, "Objects w/ checkboxes");
このコードはこのHTMLフラグメントを生成します(空のスタイルに注意してください)
<div style=""><input type="checkbox">Vendor 1</div>
これはすべて、カスタムセルを作成するためのGWTの例に厳密に従っており、これがどこで間違っているのか、またはそれがバグであるのかを理解できませんでした。
ただし、GWTデバッガーを使用して、レンダリングされた文字列を調べましたが、その時点でスタイル情報が含まれているようです。そのため、GWTパイプラインのさらに下流で、ブラウザーに到達する前に、ある時点で削除されます。
何か案は?