2012-05-31 2 views
-1

Я хочу поместить FlexTable в CellTable, поэтому в моей строке getValue() я создал FlexTable и вернул ft.toString(), где ft - это мой FlexTable.GWT CellTable Set Column to HTML

Однако, когда я table.addColumn (flex_table_string, "Заголовок"), GWT не делает HTML, а оставляет его как текст

Пожалуйста, помогите,

Спасибо,

Mat

ответ

2

Вы должны построить Cell, который строит таблицу HTML с помощью SafeHtmlBuilder вместо создания виджета и получая его HTML-представление (Кстати, вы не должны даже использовать toString(), чтобы сделать это, но скорее создать, скажем, a SimplePanel, поместите в него виджет, а затем вызовите getElement().getInnerHTML() на родительской панели).
Есть две основные причины:

  • SafeHtmlBuilder будет быстрее (это весь смысл CellTable против прогноза Grid или FlexTable)
  • вы нарушаете ожидание: сериализация виджета утратит обработку событий ,

Это, как говорится, то, что вы спрашиваете, действительно возможно: использовать Cell, который использует метод appendHtmlConstantSafeHtmlBuilder «s. Либо сделайте один, либо, в отличие от предлагаемого Алексом варианта escape/unescape, используйте TextCell, но постройте его с помощью настраиваемого SafeHtmlRenderer (для простоты), который использует SafeHtmlUtils.fromTrustedString.

-1

Вам необходимо заменить все &lt; и &gt; на < и>.

protected void render(Context context, SafeHtml value, SafeHtmlBuilder sb) { 
    String html = value.asString().replaceAll("&lt;", "<").replaceAll("&gt;", ">"); 
    sb.appendHtmlConstant(html); 
} 
Смежные вопросы