Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringMVC:通过构造函数填充表单支持bean?_Java_Spring Mvc_Constructor Injection - Fatal编程技术网

Java SpringMVC:通过构造函数填充表单支持bean?

Java SpringMVC:通过构造函数填充表单支持bean?,java,spring-mvc,constructor-injection,Java,Spring Mvc,Constructor Injection,我想知道在接收POST数据(无论是从系统还是web表单)时,是否可以通过构造函数注入来填充bean。我想知道这是否是一个比拥有大量二传手更好的主意,这是否会有一些我不知道的不良副作用 我目前在Spring中使用了一个表单支持bean,并实现了许多getter/setter,但这个bean主要用作数据结构,只保存和验证为模板引擎提供数据而注入的内容。如果我可以通过构造函数注入所有POST数据,我可以省略所有setter,但同时构造函数将处理大量参数 这是一个明智的想法,还是塞特注射的最佳实践?我的

我想知道在接收POST数据(无论是从系统还是web表单)时,是否可以通过构造函数注入来填充bean。我想知道这是否是一个比拥有大量二传手更好的主意,这是否会有一些我不知道的不良副作用

我目前在Spring中使用了一个表单支持bean,并实现了许多getter/setter,但这个bean主要用作数据结构,只保存和验证为模板引擎提供数据而注入的内容。如果我可以通过构造函数注入所有POST数据,我可以省略所有setter,但同时构造函数将处理大量参数


这是一个明智的想法,还是塞特注射的最佳实践?我的问题的答案基本上是这样的。尽管博客文章主要讨论如何处理不可变的对象,但这个概念是可以转移的

作者使用了一个定制的WebArgumentResolver。基本上,您可以手动选择到达的帖子数据,并调用bean的构造函数来填充其字段。
此外,在注释部分还提到可以使用Spring DataBinder类。关于
binder.initDirectFieldAccess();
的提示是一个很好的注释

通过这种方式,我的bean很容易瘦身,因此它不再需要假装是一个对象,尽管它是一个数据结构


考虑到这似乎是一种利用不可变对象的完全可行的方法,我得出结论,它也可能达到我的目的。虽然我可能不会使bean不可变,但使用大量的setter和getter来处理代码是无利可图的,即使可以通过构造函数进行字段填充。

为什么不使用
Validator
用于验证数据?我已经在使用验证器了。我的问题是,仅仅通过构造函数填充表单支持bean是否合理。