Ok, I think I've got it. I didn't realise that ClickableTextCell can
now (in 2.1) take a SafeHtmlRenderer as an argument, and in turn that
object can render the html just the way I want
Column<ClientModel, String> clickColumn = new Column<ClientModel,
String>(
new ClickableTextCell(
new SafeHtmlRenderer<String>() {
@Override
public void render(String result, SafeHtmlBuilder builder) {
builder.appendHtmlConstant(result);
}
@Override
public SafeHtml render(String result) {
return SafeHtmlUtils.fromTrustedString(result);
}
}
)
)
{
@Override
public String getValue(ClientModel model) {
return model == null ? null : model.getDisplayName(); // THIS
STRING IS TRUSTED FOR HTML INJECTION, BUT CAN CONTAIN <em> ELEMENTS
}
};