2012-01-06 3 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 다음과 내가 어디 알아낼 수있게되지 않았습니다 thi 문제가 있거나 버그 일 경우.

그러나 렌더링 된 String을 검사하기 위해 GWT 디버거를 사용했지만 그 시점에서 스타일 정보가있는 것처럼 보입니다. 그래서 GWT 파이프 라인의 어느 지점에서 제거되고 도착하기 전에 내 브라우저.

아이디어가 있으십니까?

답변

3

Nevermind - 내가 잘못하고있었습니다. 내가 대신 내가하고 있던 말도

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

그런 짓을하면 스타일이 작동합니다. GWT에는 무의미한 스타일을 제거하기위한 필터가 있어야합니다.

내가 시도한 것은이 메커니즘을 사용하여 잘못된 CSS 클래스 속성을 설정하는 것이 었습니다. Abstract 클래스에서 사용하는 HTMLTemplate의 클래스 속성을 설정하는 것은 예상대로 작동합니다.

관련 문제