0

我有这个模板和下面的代码来在我的 Web 应用程序中生成一个“标签”,如示例输出中所示:

模板:

<p class="tag" data-field="tags">Tags:
</p>

Java代码:

@DataField
DivElement tags = DOM.createElement("p").cast();

@Override
public void setModel(MyModel model) {
   binder.setModel(model, InitialState.FROM_MODEL);
   for (String tag : model.getTags()){
       Anchor a = new Anchor();
       a.setText(tag);
       a.setHref("#Tags?id=" + tag);
       tags.appendChild(a.getElement());
       Label comma = new Label(",");
       tags.appendChild(comma.getElement());
   }
}

HTML 输出(浏览器):

<p data-field="tags" class="tag">Tags:

<a class="gwt-Anchor" href="#Tags?id=test">test</a>
<div class="gwt-Label">,</div>
<a class="gwt-Anchor" href="#Tags?id=tagg">tagg</a>
<div class="gwt-Label">,</div>
<a class="gwt-Anchor" href="#Tags?id=new">new</a>
<div class="gwt-Label">,</div>
</p>

我现在面临的问题是从浏览器运行时的 HTML 输出应该是这样的:

<p data-field="tags" class="tag">Tags:

<a class="gwt-Anchor" href="#Tags?id=test">test</a>,
<a class="gwt-Anchor" href="#Tags?id=tagg">tagg</a>,
<a class="gwt-Anchor" href="#Tags?id=new">new</a>
</p>

并且不要在两者之间创建gwt-labelDIV

4

3 回答 3

1

代替

Label comma = new Label(",");
tags.appendChild(comma.getElement());

利用

tags.setInnerHTML(tags.getInnerHTML() + ",");
于 2013-08-27T04:40:49.927 回答
0

我建议使用 SafeHTML。SafeHTML 模板还可以使您的代码更简单。

public interface MyTemplate extends SafeHtmlTemplates {
    @Template("<a class=\"gwt-Anchor\" href=\"#Tags?id={0}\">{1}</a>{2}")
    SafeHtml getTag(String url, String text, String comma);
}

(最后一个参数“逗号”可以是“、”或“”)。

于 2013-08-27T06:43:26.007 回答
0

而不是追加孩子尝试

tags.appendData(",");
于 2013-08-27T04:07:40.230 回答