我正在使用基于JSP的框架(由公司员工编写;它基于/ extends Struts2),它使用bean来表单数据。相当标准的东西。
例如,给定此标记:
<input name="foo" type="text" />
在某些时候,框架将获取我给它的JavaBean的实例,并且在页面加载时,它将尝试调用bean.getFoo()
并期望它返回String
,然后它将返回设置为输入字段的值。
然后,当页面保存时,在框架中的某个位置,它将获取提交给<form>
元素的值,它将调用bean.setFoo(String val)
并将值作为参数传递。
该框架还支持基于模板动态生成可变数量的字段。一旦通过所有JSP代码,它就会生成如下的HTML:
<input name="foo_1" type="text" />
<input name="foo_2" type="text" />
<input name="foo_3" type="text" />
当然,它会尝试调用bean.setFoo_1(String val)
,bean.setFoo_2(String val)
,bean.setFoo_3(String val)
等,以获取与页面上一样多的模式实例。
可能发生的次数实际上是无限制的(当然,大到足以手动创建所有可能的实例,这是非常无聊的)。所以我正在寻找某种动态bean类,它允许框架调用这些getter和setter,并发现它们确实存在于框架正在处理的对象实例上作为getter / setter公共方法存在。据推测,它使用反射来确定方法是否存在。
我有什么方法可以实现这个(或使用现有的库)而不是写下面的东西? :
public class MyBean {
private String foo_1;
private String foo_2;
private String foo_3;
private String foo_4;
private String foo_5;
// 30 years later ...
private String foo_2147483647;
// Eclipse -> Generate getters and setters... for all 2167483647 of the above and watch it crash OOM because I have so many fields
}
答案 0 :(得分:0)
只需填写表格:
<input type="text" name="foo" value="apple"/>
<input type="text" name="foo" value="banana"/>
<input type="text" name="foo" value="grapefruit"/>
并在行动中创建一个mathod setFoo(String[] foos);