【问题标题】:Insert Widget into pure HTML-code将小部件插入纯 HTML 代码
【发布时间】:2013-03-15 18:05:02
【问题描述】:

由于我要显示的页面包含大量文本,我想在它们自己的文本文件中预先设置格式,因此我执行以下操作:

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 ..

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

对我有什么建议吗?

【问题讨论】:

  • 使用了 ui binder?
  • 不,我认为这与我的问题无关^^

标签: gwt web-applications servlets


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    使用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);
    

    【讨论】:

      【解决方案3】:

      您也可以使用以下方法:

      Label w = new Label();
      w.getElement().setInnerHTML(html);
      w.getElement().setInnerSafeHtml(safeHtml);
      

      【讨论】:

        猜你喜欢
        • 2012-08-13
        • 2015-07-22
        • 2015-07-09
        • 1970-01-01
        • 1970-01-01
        • 2022-01-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多