可以使用Struts2形式的不可变类吗?

可以使用Struts2形式的不可变类吗?,struts2,Struts2,情境:我目前正在从使用Struts 1转向使用Struts 2。在Struts1中,表单类必须遵循JavaBean规范。由于我的业务数据对象都是不可变的,因此需要创建许多类的JavaBean版本,并在这两者之间映射方法 Struts2是否支持对表单使用不可变对象 如果是这样,我如何配置它,以便使用表单字段从其生成器实例化不可变对象?从请求填充的对象不能是不可变的,因为OGNL在其上调用setter–这正是OGNL(和大多数ELs)的工作方式 我认为您有两种选择:您可以使用自定义参数拦截器执行某些

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

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


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

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

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


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

您需要调用Struts2支持,询问他们是否支持表单的不可变对象。您可以配置操作、结果、拦截器等。您希望在表单字段中使用哪一个?您尝试了什么?我不理解“关闭”或“关闭”投票。FWIW,我是投稿人。谢谢,戴夫。我将与构建器一起接受form类的实例,因为在可以避免反射的情况下,我不太喜欢反射。