捕获JSP / Struts bean中

时间:2017-08-29 18:26:50

标签: java jsp struts2 javabeans

我正在使用基于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
}

1 个答案:

答案 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);