代码之家  ›  专栏  ›  技术社区  ›  markzzz

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

gwt
  •  0
  • markzzz  · 技术社区  · 14 年前

    我对这项技术很新,但我想知道是否可以在服务器上友好地创建新对象(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) 
    }
    

    所以,我不需要预先加载对象,但只有在单击某个按钮(或执行某个操作)时才加载它们。这将节省大量在客户机上加载(作为JavaScript)的代码(如果不执行任何操作,则为inutil)。

    一如既往,谢谢你的时间!

    2 回复  |  直到 14 年前
        1
  •  1
  •   Wesley    14 年前

    我不完全确定我是否理解你的问题,但如果我没有答对,请随意修改你的问题或发表评论。

    主机页

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

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

    宿主页可以包含任何所需的HTML。唯一的要求是你必须包括 <script> 加载GWT引导脚本的元素。

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

    运行时服务器呈现的HTML

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

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

    客户端生成

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

    • 使用生成一些HTML StringBuilder 诸如此类,然后使用 设置HTML 在一个 HTML格式 小装置。
    • 使用 DOM class
    • 将数据设置为小部件并将其添加到面板或根面板。
        2
  •  2
  •   Riley Lark    14 年前

    GWT不支持您显示的模式,但是您可以通过“代码拆分”来实现类似的效果:read http://code.google.com/webtoolkit/doc/latest/DevGuideCodeSplitting.html

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

    推荐文章