有没有办法在 Spring webflow 的 View 状态中使用不可变对象(immutable对象)作为模型?我知道 Spring webflow 通常倾向于这种事情的 setter ,但我想知道是否有人知道可以使用构造函数处理绑定(bind)数据的自定义 DataBinder 或 WebDataBinder?
我也知道有这个(SPR-1488)针对JIRA任务的问题,它提倡直接字段访问。人们是否提倡这种做事方式?对我来说感觉不太对劲。
谢谢,
斯图尔特
最佳答案
我已经举了一个例子,说明如何使用 Jackson 的 ObjectMapper 来做到这一点(除了 JSON 之外,它还可以很好地将任何东西映射到不可变对象(immutable对象))。
https://gist.github.com/4458079
有几点需要注意的是,您不能使用 @ModelAttribute
如果您想使用 Spring 的验证 ( BindingResult
),除非您替换所有参数解析器。然而@Valid
(经过验证)应该可以工作并且@RequestBody
也将与我的解决方案一起工作(未经验证)。
尽管它使用 Jackson 将请求参数映射到对象,但不涉及 JSON 处理。如果你想看到 MappingJacksonHttpMessageConverter .
作为一个软弱无耻的插件,我需要将它与我的 Immutable ORM called: JIRM 结合使用。因为我更喜欢消息驱动架构的不可变对象(immutable对象)。
关于Spring Webflow DataBinding 通过构造函数绑定(bind)到不可变对象(immutable对象)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7066405/