为什么在GWT中的自定义HTMLColumn中没有解析了tag?

时间:2014-06-06 10:57:31

标签: gwt

好的,我有一个HTML列,它应该将包含html标记的任何TextCell解析为HTML值:

public class HTMLColumn extends Column<List<String>, String>{
    public HTMLColumn(){
          super(new ClickableTextCell(){
            public void render(Context context, 
                   SafeHtml value, 
                   SafeHtmlBuilder sb)
            {
                //String text="";
                if(value!=null){
                    //text=value.asString();
                    sb.appendHtmlConstant("<div>");
                    sb.appendHtmlConstant("<b>"+value.asString()+"</b>");
                    sb.appendHtmlConstant("</div>");
                }

            }   
       });
    }
}

好的,当使用包含car<br>bike的文本进行测试时,我可以看到整个文本变为粗体,因此sb.appendHtmlConstant似乎没问题,但它没有使bike成为新队。它呈现如下文本:粗体car<br>bike

这意味着<br>未被解析。

这是css问题还是发生了什么?

1 个答案:

答案 0 :(得分:0)

看起来valueSafeHtml方法中传递的render)不是您想要的。

当你想要插入的字符串被解析为成为SafeHtml时,如果你信任String,则需要像下面那样完成。

SafeHtml safeHtml = SafeHtmlUtils.fromTrustedString(value);

我认为这样做的一种方法是使用您自己的ClickableTextCell实现创建SafeHtmlRenderer

ClickableTextCell cell = new ClickableTextCell(new SafeHtmlRenderer<String>(){

    SafeHtml render(String object){
       return SafeHtmlUtils.fromTrustedString(object);
    }

    void render(String object, SafeHtmlBuilder builder){
        builder.appendHtmlConstant(object);
    }

});