2013-05-02 42 views
1

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

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

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

+0

您需要调用Struts2支持并询问他们是否支持表单的不可变对象。您可以配置动作,结果,拦截器等,您希望使用哪些表单域以及您尝试了什么? – 2013-05-02 17:05:59

+0

我不明白关闭或投票。 FWIW,我是一名提交者。 – 2013-05-02 18:29:54

回答

2

从请求中填充的对象不能是不可变的,因为OGNL调用它的设置器–,这就是OGNL(和大多数EL)的工作方式。

我想你有两个选择:你可以用一个自定义参数拦截器来做某件事,或者创建一个构造函数或构建器来获取用于该表单的bean。

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

+0

谢谢,戴夫。我会和建筑师一起去接受一个表单类的实例,因为当它可以被避免时,我不是一个反射的狂热粉丝。 – Matt 2013-05-02 18:38:23

相关问题