我公司目前正在评估Java FAT客户端的开发。它应该支持动态GUI,并且在服务器端具有尽可能多的逻辑。因此,想法出现了将屏幕作为XML发送到FAT客户端,将其显示给用户并将输入的数据类似于“html form”发送回如下结构:
<fields>
<field type="checkbox" name="active" checked="false" x="10" y="10" />
<field type="textbox" name="username" value="dummy" x="10" y="30" />
<field type="selection" name="group" selectedIndex="1" x="10" y="50">
<data index="0">user</data>
<data index="1">admin</data>
</field>
<field type="button" name="ok" x="10" y="70" />
<field type="button" name="cancel" x="10" y="90" />
</field>
背景
赞助商正在寻找一个数据录入和审查应用程序,只需更改配置即可满足他们的需求。因此,我们必须为其管理员提供设计所谓的“屏幕”(也称为表单)的可能性,并提供客户端/服务器系统,使他们能够将这些系统分发给最终用户。输入数据(即用户输入的数据)将被转发到处理业务逻辑的现有工作流引擎。
问题
有没有人在那里开发类似的东西?你会建议哪些图书馆?任何专业人士利弊?非常感谢!
答案 0 :(得分:2)
“它应该支持动态GUI,并且在服务器端具有尽可能多的逻辑。”
您所描述的是一个网络应用程序。客户端已经编写(浏览器),XML(ish)格式是(X)HTML。
可以使用您自己的XML格式和您自己的客户端重新创建此过程,但我不明白为什么这是必要或可取的。
答案 1 :(得分:2)
当我上次寻找这样的事情时,有两个选项Thinlet和Apache Jelly。
优点是,您可以将应用程序的布线和构造与行为分开。我不确定他们中任何一个的可行性,但我想可以成为转换到另一个工具包的一些功能,就像Lazlo可以转换成AJAX和Flash一样
在我发现这些之前,我已经编写了一个类似的工具包(当Echo是最前沿的时候,而Java 1.3是最前沿的),基于JHTMLEditor。它工作正常,但是监听器与渲染器在同一个VM中运行。
这提出了@Draemon在客户端/服务器环境中提出的观点,我不得不问这是否是解决更大问题的有效方法。我猜你想把很多CPU周期卸载到客户端上?也许如果再添加一点,我们可以提出更多建议吗?这确实指出了一种方法,您的应用程序作为localhost
网络服务器部署在桌面上,并且您将页面提供给本地浏览器。
如果您可以等待,我会等待JavaFX,因为这会使构建applet变得更具声明性,并且还会减少渲染库的初始下载。
答案 2 :(得分:1)
尝试JavaFX(Wikipedia about JavaFX)。它不是XML,但它也很容易和声明。
答案 3 :(得分:1)
使用SWT做了类似的事情,虽然那是将逻辑数据结构(在本例中为应用程序表单模型)转换为GUI,而不是直接指定GUI。这允许我们根据客户端属性(PocketPC或桌面)重构GUI,因为数据模型是语义而不是关于布局的独裁。
编写XML解析器和生成器很简单。编写一些从模型生成接口的东西不那么简单,因为您需要存储GUI元素与它们相关的模型字段之间的关系,这样您就可以在进行更改时更新它们,而不是每个元素上通常的硬编码监听器。 GUI元素。
答案 4 :(得分:1)
有很多基于XUL的工具包可用于各种语言,包括Java。 我认为Thinlet为Java做了一个非常简单的XUL,但应该有其他的。
答案 5 :(得分:1)
基本上,您将序列化表单发送到客户端,并序列化结果数据。这可以通过Java序列化(即RMI)来完成,但防火墙等可能会使Internet上的RMI使用变得复杂。
如果您想在线上使用XML over HTTP,您可以查看java.beans.XMLEncoder。 XMLEncoder面向UI组件的序列化,但它也可以用于序列化POJO。这些本质上是在FAT客户端中填充用户输入的模型对象。
答案 6 :(得分:1)
看一下ofbiz框架。 它使用小部件(xml)并通过处理程序将它们转换为输出 http://ofbiz.apache.org/
答案 7 :(得分:0)
试试QT Jambi。这允许您在QT Designer中构建表单布局,并将它们导出为您所描述的排序的描述符文件。