GWT — Заставить ячейку CellTable использовать HTML?

#html #gwt #cell

#HTML #gwt #ячейка

Вопрос:

У меня есть таблица ячеек, в ячейки которой я хочу поместить HTML-код. Следующий код не работает, пробелы удалены из выходных данных.

     TextColumn<MyCell> column1 = new TextColumn<MyCell>()
    {
        @Override
        public String getValue(MyCell myCell)
        {
            String result = "     "  myCell.getValue();
            return resu<
        }
    };
    table.addColumn(column1 , "Header1");
  

Я знаю, что это можно было бы сделать с помощью css, но я просто хочу знать, как поместить HTML-код в ячейки. Любая помощь приветствуется!

Ответ №1:

AFAIK дополнительные пробелы игнорируются в HTML — вам следует использовать тег pre для сохранения форматирования.В любом случае, пожалуйста, найдите мой пример столбца ниже. Он генерирует хороший индикатор выполнения из значений, содержащихся в объектах, поддерживаемых поставщиком данных.

 final SafeHtmlCell progressCell = new SafeHtmlCell();

    Column<UiScheduledTask, SafeHtml> progressCol = new Column<UiScheduledTask, SafeHtml>(
            progressCell) {

        @Override
        public SafeHtml getValue(UiScheduledTask value) {
            SafeHtmlBuilder sb = new SafeHtmlBuilder();
            float percent = new Float(value.getCompleted())
                    / new Float(value.getAll());
            int rounded = Math.round(percent * 100);
            sb.appendHtmlConstant("<div style='width: 100px; height: 20px; position: relative;'>");
            sb.appendHtmlConstant("<div style='z-index: 2; display: inline; width: 100px; position: absolute; left: 0px, top: 0px; text-align: center;'>"
                      value.getCompleted()
                      "/"
                      value.getAll()
                      "</div>");
            sb.appendHtmlConstant("<div style='position: absolute; left: 0; top: 0; width: 100px; z-index: 1'><div style='display: inline; float: left; width: "
                      rounded
                      "%; height: 20px; background-color: #82cd80;'></div>");
            sb.appendHtmlConstant("<div style='display: inline; float: right; width: "
                      (100 - rounded)
                      "%; height: 20px; background-color: #c54c4d;'></div></div>");
            sb.appendHtmlConstant("</div>");
            return sb.toSafeHtml();
        }
    };
  

Комментарии:

1. Спасибо jgrabowski! Это работает идеально! И да, дополнительные пробелы игнорируются в html, если вы не используете тег pre .