是否可以在Struts2表单中使用不可变类?

时间:2013-05-02 15:58:05

标签: struts2

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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