我想描述一个旨在执行某项任务的Java类的预期输入, 在Java类本身。目的是能够直接生成用户界面加载这个类。
例如,假设基接口为Task
(实现Runnable
):
public class BuildRectangleTask implements Task {
public void setLength(double val) { /* ... */ }
public void setWidth(double val) { /* ... */ }
public void run() { /* Build a rectangle */ }
}
我可以使用一些反射从中获取参数名称,然后构建 用户界面的相关部分,例如:
<form>
<label for="length">Length: </label>
<input type="text"name="length" id="length" /><br />
<label for="width">Width: </label>
<input type="text"name="width" id="width" />
</form>
这可能适用于非常简单的示例,但访问者名称不能总是翻译 适当地使用自然语言而不会听起来很尴尬(它们也可能需要翻译)。 此外,我还希望能够获得其他信息(例如哪些信息是可选的或具有默认值)。
我正在考虑使用注释来描述这个:
@Description(text="This tasks builds a rectangle")
public class BuildRectangleTask implements Task {
@Input(label="Length", optional=false)
public void setLength(double val) { /* ... */ }
@Input(label="Width", optional=true, default=10,
help="This is the width of the rectangle")
public void setWidth(double val) { /* ... */ }
public void run() { /* Build a rectangle */ }
}
这对于额外信息也很有用,例如多种选择:
@Input(label="Colour", options={"Red", "Green", "Blue"})
我还希望能够基于以下信息生成其他类型的用户界面,例如命令行,get-opt样式:
java TaskProcessor BuildRectangle --help
usage: BuildRectangle --height= [ --width=10 ] [ --color= ]
Options:
--height= ...
--width= This is the width of the rectangle (defaults to 10).
--color= Red, Blue, Green.
是否有任何标准的注释或通常的框架来实现这一点(或者可能是完全不同的方法),最好与Java和Groovy兼容?
我希望这个类尽可能地自包含(即避免配置文件)。 (我不一定对定义这样一个任务的输出以及它是如何产生兴趣 应该显示。)
答案 0 :(得分:1)
您可能需要查看javabuilders。它与你所获得的想法有很多重叠。特别是,它允许您以声明方式指定UI布局,并自动将数据从UI绑定到Java对象。
答案 1 :(得分:1)
您可以尝试http://today.java.net/pub/a/today/2008/06/24/automatic-user-interface-with-openxava.html这是您想要做的事情,但可能是错误的框架!可能有点矫枉过正。