0

由于我要显示的页面包含很多文本,我想在他们自己的文本文件中预先格式化,所以我执行以下操作:

execute: onModuleLoad()
         - make an Async call to the server and load 
           the text files which are html-formatted

代码如下所示:

homeAsync.load(new AsyncCallback<String>() {
  public void onFailure(Throwable caught) {
    contentHome.add(new HTML("<h1>FAIL</h1>something went wrong"));
    caught.printStackTrace();
  }

  public void onSuccess(String result) {
    contentHome.getElement().setId("inner");
    contentHome.add(new HTML(result));
    //RootPanel.get("content").add(new HTML(result));
  }
});

现在.. 在这些文本文件中是一些自定义标签:

<!graph>

我想用一些 GWT 小部件替换它。我的问题是,我只是不知道我怎么能轻松地做到这一点。

我可以做一个像这样的工作:

- load text part 1 (async call)
- insert graph for part 1
- load text part 2 (asynca call)
- insert foobar
- and so on ..

我什至不知道这是否可行,但老实说..这太丑了^^

对我有什么建议吗?

4

3 回答 3

0

知道part1part2二会让事情变得更清楚。

是的,您可以将所有HTML内容呈现到widget(但以安全的方式,是的,谈论SafeHtml)。

并避免两次RPC调用从数据库中获取字符串。如果您知道part1part2一次加载字符串(使用标识符并将其拆分client side)。

于 2013-03-16T09:10:03.687 回答
0

您还可以使用以下方法:

Label w = new Label();
w.getElement().setInnerHTML(html);
w.getElement().setInnerSafeHtml(safeHtml);
于 2013-03-18T19:35:44.650 回答
0

使用HTMLPanel作为模板。

一个例子:

String html = "<div id='one' style='border:3px dotted blue;'></div>"
    + "<div id='two' style='border:3px dotted green;'></div>";
HTMLPanel panel = new HTMLPanel(html);
panel.setSize("200px", "120px");
panel.addStyleName("demo-panel");
panel.add(new Button("Do Nothing"), "one");
panel.add(new TextBox(), "two");
RootPanel.get("demo").add(panel);
于 2013-03-16T15:50:57.637 回答