由于我要显示的页面包含大量文本,我想在自己的文本文件中预先格式化,我会执行以下操作:
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 ..
我甚至不知道这是否会奏效但说实话......那太简单了^^
对我有什么建议吗?
答案 0 :(得分:0)
了解part1
和part2
两个可以使事情变得清晰。
是的,您可以将所有HTML
内容呈现给widget
(但是以安全的方式,是在谈论SafeHtml)。
并且避免两次RPC
调用从DB获取字符串。如果您知道part1
和part2
一次加载字符串(使用标识符并将其拆分为{{1} }})。
答案 1 :(得分: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);
答案 2 :(得分:0)
您还可以使用以下方法:
Label w = new Label();
w.getElement().setInnerHTML(html);
w.getElement().setInnerSafeHtml(safeHtml);