Spring Webflow DataBinding 通过构造函数绑定(bind)到不可变对象(immutable对象)?

标签 spring immutability spring-webflow

有没有办法在 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/

相关文章:

java - ConstraintViolationException 和 MethodArgumentNotValidException 之间有什么区别

java - 如何在 spring-data-mongodb 框架中将 BigDecimal 转换为 Double

java - 更改遗留代码中的不可变类

java - 循环中 java.util.Map.putAll(Map<>) 和 java.util.Map.put(Integer, Object) 有什么区别

java - jsf 2.0 + springwebflow 2.0 中不受支持的异常

mysql - JPA 与 EclipseLink ManyToMany 关系不起作用

JavaEE应用服务器还是轻量级容器?

grails - 如何在 Grails Web Flow 中呈现验证结果?

java - Spring Web Flow - 处理并发访问