【发布时间】:2014-06-03 07:00:42
【问题描述】:
我最近有理由退出几个不相关的框架并从头开始。在一种情况下,Javascript 驱动表单 UI,而在另一种情况下,Java Swing 也是如此。我意识到我可以创建一个简单的 JSON 对象来定义从字段到事件绑定的 UI 元素。
在我深入兔子洞之前,我开始想知道:是否有新的或现有的标准有人见过这类事情?
下面是我正在玩的一种味道。我正在使用 JSON 对象来定义 Swing UI 布局以及(单独)面向 Web 的 JavaScript 生成的 Web 表单。
这两个变量源于我的构建,它最初是一个简单的网格控件,在我认为拥有一个表单之前我需要字段。当然,它可以折叠成一个 JSON 结构。
var app = {
forms: form1,
bindings: [],
layout:[{
width: 400,
height: 300,
bgcolor: '#fefefe',
color: 'black'
}]
}
var form1 = {
"formfield1": {
itype: "text",
tag: "input",
iclass: "frminput",
defaultval: "text input",
label: "Text Value 1",
validation: '/[a-z][A-Z][0-9]/',
error: "No special characters allowed - only numbers or letters for this input",
bindings: [{
ievent: 'click',
fx: function(){
validateTest(this);
}
},{
ievent: 'blur',
fx: function(){
blurTest(this);
}
}]
},
"formfield2": {
itype: "select",
tag: "select",
iclass: "frminput",
defaultval: "apples",
label: "Test Select",
options: [["apples","Apples"], ["oranges","Oranges"], ["peaches","Peaches"]]
},
"formfield3": {
itype: "date",
tag: "input",
iclass: "date",
label: "Test Date",
defaultval: new Date()
},
"formfield4": {
itype: "text",
tag: "input",
iclass: "frminput",
label: "Text field 2",
defaultval: "text input other"
},
"objectproperty": {
itype: "button",
tag: "button",
iclass: "btn btn-small",
label: "test magnitude button",
defaultval: "",
bindings: [{
ievent: 'click',
fx: function(){
buttonAction(this);
}
}]
}
};
我最想发现的是其他人已经对此进行了更多思考。
这篇文章的第二个最佳结果是对最佳实践的一些建议。
我们的目标是拥有一个相当不可知的实现,该实现在未来可移植到其他平台或提供不同系统的轻松集成。
更新:在这个问题上进行了很好的讨论:Standard JSON API response format? 关于各种基于 JSON 的对象和实现的新兴和建议标准。然而,其中大部分都集中在 AJAX 的使用上。这个问题仍然是一个很好的交叉参考。
【问题讨论】:
-
您是否在询问格式化 JSON 的最佳实践
-
是的,但特定于表单和字段关系 - 或扩展到应用程序 ui 定义。寻找围绕这个特定领域的任何新兴规范。
-
@Hans Z - 你为什么要删除 javascript 标签?上面的符号是用 Javascript 编写的,目标是 Javascript 支持的对象规范,也可以与 Java swing 一起使用。
-
您没有使用 javascript。您正在使用 JSON。您可以使用 json 而不使用 javascript。
-
确实如此,但 Javascript 是该问题的既定目标实现。其他使用 JSON 和 Javascript 的人之前可能已经跨过了这座桥。我也没有严格使用 java 或 swing,但它们是理想的目标实现。
标签: java json swing user-interface