1

情况:我目前正在从使用 Struts 1 转向使用 Struts 2。在 Struts 1 中,表单类必须遵循 JavaBean 规范。由于我的业务数据对象都是不可变的,这需要创建许多类的 JavaBean 版本,以及两者之间的方法映射。

Struts2 是否支持对表单使用不可变对象?

如果是这样,我该如何配置它,以便使用表单字段从其构建器实例化不可变对象?

4

1 回答 1

2

从请求中填充的对象不能是不可变的,因为 OGNL 会在其上调用 setter——这正是 OGNL(和大多数 EL)的工作方式。

我认为您有两个选择:您可以使用自定义参数拦截器执行某些操作,或者创建一个构造函数或构建器,该构造函数或构建器采用用于表单的 bean。

没有任何真正的想法,我可能会做后者,尽管如果有很多表单类,我可能会创建一个快速工具来生成表单类。拦截器会更优雅,但它可能需要使用反射。

于 2013-05-02T16:30:13.963 回答