我有以下要求:基于一些用户输入,我需要生成一个HTML表单,用户可以将其嵌入到单独的Web应用程序中。因为我熟悉它,所以我想用GWT做这件事。
我很清楚输入解析和小部件生成部分。我不知道该怎么做是如何导出根小部件(很可能是Panel)编译的代码,因此用户可以获取代码并将其包含在其他页面中。
类似的东西:
String rootPanelCode = rootPanel.exportCode();
Dialog codeDialog = new DialogBox();
codeDialog.setText(rootPanelCode);
然后用户将显示的代码复制到某个HTML文件中:
<script type="text/javascript" language="javascript">
//copied code goes here
</script>
要求HTML文件中的特定<div id="required_id" />
不是问题。或者也许javascript代码是不够的,用户需要下载带有js和html文件的zip文件,将它们复制到目录并在页面中引用它们。这也不是问题。
我的用例可以用GWT吗?
提前致谢。
答案 0 :(得分:1)
我会说......不:)主要是因为当启动GWT应用程序时,它首先运行引导程序文件,然后选择当前浏览器的特定排列。因此,您获得的代码可能包含一些在所有浏览器中都不起作用的内容。这个可能通过提供某种“轻量级”的boostrap文件/方法来下载,但我怀疑它会起作用。
此外,您获得的JS代码经过了大量优化(并且使用GWT 2.0,JS文件包含JS,CSS甚至图像),例如,当出于性能原因将可能的字符串放入变量时 - 但这些变量通常是分组的在编译的JS文件中放在一起,所以即使你能以某种方式获得创建表单的代码,它也可能包含对一些未定义变量的引用。换句话说,编译后的代码应该作为一个整体使用。
更“优雅”的解决方案(更重要的是,GWT可行;))是将表单导出为某种抽象形式/语言,也许是JSON,以便您可以在其他Web上轻松地解析/重新创建它应用程式:
{
"form1": [
{ "label1": "value1" },
{ "label2": "value2" }
]
}
嗯,我只是想到了一个可能的黑客..正确使用code splitting,可能可以分离负责表单创建的代码 - 但这会使它成为可能也许更容易“导出”,它不是一个完整的解决方案(我不推荐它......只是一个有趣/可能的黑客攻击)。