2012-01-06 16 views
1

GWT CellTable用のカスタムセルレンダラーを作成しようとしています。私は、セルの内部にCSSスタイルを設定しようとしていますが、何らかの理由でレンダリングされません。私はこのコードは、このHTMLフラグメントを生成GWTスタイルがAbstractCellで機能しない

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"); 

レンダラを呼んでいるところ

は、ここで(空のスタイルに注目してください)私のカスタムセルレンダラー

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); 

    } 
}   

だし、ここにある

<div style=""><input type="checkbox">Vendor 1</div> 

すべてこれは密接にthe GWT example for Creating Custom Cellsの後に続きます。 sが間違っているか、それともバグか。

ただし、レンダリングされたStringを調べるためにGWTデバッガを使用していますが、その時点でスタイル情報が入っているようです.GWTパイプラインのさらに下のところで削除されています私のブラウザ。

アイデア?

答えて

3

Nevermind - これは間違っていました。私が代わりに私がやっていたナンセンスの

SafeStyles styles = SafeStylesUtils.fromTrustedString("width: 100%;");

ような何かを行う場合はスタイルが動作します。無意味なスタイルを削除するには、GWTにいくつかのフィルタが必要です。

私がしようとしていたのは、間違っていたこのメカニズムを使ってCSSクラス属性を設定したことでした。抽象クラスによって使用されるHTMLTemplateのクラス属性を設定することは、予測可能に機能します。

関連する問題