GWT - 是否可以创建新的HTML元素(来自服务器),或者我可以只更新客户端上加载的元素?

时间:2010-11-19 21:01:35

标签: gwt

我是关于这项技术的新手,但我想知道是否有可能在服务器上创建新对象(html元素,例如div / span /等等......)并将其发送到客户端,或者如果当我在应用程序中开发它时,我可以加载在客户端制作的那些。

我不问怎么做(我认为这是一个微妙的论点),但如果我能,并且(如果是的话)我可以在哪里获得一些东西/示例/教程来做到这一点。

示例

我通常做的事情:

...
public void onSuccess(Boolean result) {
    if(result) {
        myFunction();
    }
}

...

myFunction() {
    InlineLabel label=new  InlineLabel();
    this.add(label)    
}

我在寻找什么:

...
public void onSuccess(InlineLabel result) {
    this.add(result) 
}

所以,我不需要事先加载Object,但只有在我点击某个按钮(或者如果我执行一个动作)时才加载它们。这将在客户端上加载(作为JavaScript)很多代码(即inutil,如果我不做任何操作)。

像往常一样,谢谢你的时间!

2 个答案:

答案 0 :(得分:2)

GWT不支持您展示的模式,但您可以通过“代码拆分”获得类似的效果:阅读http://code.google.com/webtoolkit/doc/latest/DevGuideCodeSplitting.html

通过代码拆分,客户端只会立即下载所需的脚本(由开发人员配置)。例如,如果用户导航到需要更多小部件的UI的更复杂区域,则将下载其他代码。

答案 1 :(得分:1)

我不完全确定我理解你的问题,但如果我错过了标记,请随时修改你的问题或发表评论。

主页

GWT应用程序在以下(简化)过程中加载:

  • 已加载主页(HTML)
  • 加载了引导脚本
  • 已加载已编译的应用程序脚本

主页可以包含您想要的任何HTML。唯一的要求是包含一个加载GWT引导脚本的<script>元素。

因此,您可以让服务器返回包含您喜欢的任何服务器生成标记的页面。

运行时呈现服务器的HTML

应用程序运行后,您可以在代码中发送异步请求以从服务器检索任意数据。一种选择是检索服务器生成的HTML并将其插入到您的应用程序中。

对于此选项,您需要实例化HTML widget,然后使用其setHTML方法将服务器生成的标记插入到窗口小部件中。

客户端生成的

作为替代方案,您可以通过GWT RPC从服务器检索结构化数据。在基于Java的服务器上创建的对象由服务器上的GWT序列化,并在客户端上反序列化为常规对象。然后,您可以使用访问器方法(getNamegetId等)从这些对象中提取数据。此时,您有几个选择:

  • 使用StringBuilder等生成一些HTML,然后在setHTML小部件上使用HTML
  • 使用DOM class
  • 生成DOM元素
  • 将数据设置为小部件并将其添加到面板或根面板。