java - 在不同的网页中包含动态创建的 GWT 小部件

标签 java javascript serialization gwt

我有以下要求:根据一些用户输入,我需要生成一个 HTML 表单,用户可以将其嵌入到单独的 Web 应用程序中。我想用 GWT 来做这件事,因为我很熟悉它。

我很清楚输入解析和小部件生成部分。我不知道该怎么做是如何导出根小部件(很可能是面板)编译的代码,以便用户可以获取代码并将其包含在其他页面中。

类似于:

String rootPanelCode = rootPanel.exportCode();
Dialog codeDialog = new DialogBox();
codeDialog.setText(rootPanelCode);

然后用户将显示的代码复制到某个 HTML 文件中:

<script type="text/javascript" language="javascript">
    //copied code goes here
</script>

需要特定的<div id="required_id" />在 HTML 文件中不是问题。或者也许 JavaScript 代码还不够,用户需要下载包含 js 和 html 文件的 zip 文件,将它们复制到目录并在页面中引用它们。这又不是问题。

我的用例可以使用 GWT 吗?

提前致谢。

最佳答案

我想说...不:) 主要是因为当 GWT 应用程序启动时,它首先运行引导文件,该文件依次为当前浏览器选择特定的排列。因此,您获得的代码可能包含一些不适用于所有浏览器的内容。这可能可以通过提供某种“轻量级”boostrap 文件/方法来下载,但我怀疑这是否有效。

此外,您获得的 JS 代码经过了高度优化(在 GWT 2.0 中,JS 文件包含 JS、CSS 甚至图像),例如,出于性能原因,当可能的字符串被放入变量时 - 但这些变量通常会分组在一起并放在编译后的 JS 文件中的一个位置,因此即使您可以以某种方式获取创建表单的代码,它也可能包含对某些 undefined variable 的引用。换句话说,编译后的代码应该作为一个整体来使用。

一个更“优雅”的解决方案(更重要的是,使用 GWT 可行;))是将表单导出为某种抽象形式/语言,可能是 JSON,以便您可以在其他 Web 应用程序中轻松解析/重新创建它:

{
    "form1": [
        { "label1": "value1" },
        { "label2": "value2" } 
    ]
}  
<小时/>

嗯,我只是想到了一个可能的黑客..正确使用 code splitting可能可以分离负责表单创建的代码 - 但这将使它也许更容易“导出”,这不是一个完整的解决方案(我不会推荐它......只是一个有趣/可能的黑客)。

关于java - 在不同的网页中包含动态创建的 GWT 小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2375383/

相关文章:

javascript - 如何使用 MUI React 左对齐 Item1 并右对齐 Item2 和 Item3?

c++ - 用于枚举序列化的函数模板

c# - 从 JSON Api WinRT 反序列化对象

java - SEAM session 还是 session 作用域 bean?

java - 连接到具有多个客户端的服务器

java - 如何将多个 Hadoop MapReduce Job 合并为一个?

javascript - 使用 jQuery/JS 序列化 Map 对象

java - 正则表达式替换字符串第一个索引处除减号字符 "-"之外的所有无效字符

javascript - 使用 Highcharts 深入钻取 1 个以上的子报表

javascript - 在函数调用前加上 void