好的,我有一个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问题还是发生了什么?
答案 0 :(得分:0)
看起来value
(SafeHtml
方法中传递的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);
}
});