2015-12-24 151 views
0

我在一些项目中使用了spring mvc。根据我的经验,例如,在构建表单时,会使用各种html表单元素的弹簧等效物,例如使用弹簧表单而不是普通表单标记。我的理解是有必要的,这样如果后端控制器从请求属性为您构建业务对象,则可以创建表单元素和对象属性之间的映射。但是,我遇到了一个没有spring元素的普通html表单,后端控制器仍然构造了该对象。使用弹簧形式元素而不是常规形式元素的优点是什么?Spring MVC对象创建

+0

数据通过HTTP提交。在创建模型对象时,Controller不关心如何创建html。你问我们为什么使用标签库? –

回答

2

JSP标签通常只用于生成HTML。因此,“手动”生成与JSP标记生成的HTML相同的HTML会产生相同的结果:Spring无法知道它接收到的HTTP请求是否已由表单使用其自己的标记生成其他。

的优点是简洁,少重复:

<form:input path="name" /> 

更加简洁,并且有引入的bug更少的风险,比

<input name="name" type="text" value="<c:out value='${command.name}'/>" /> 

有的标签都比较先进,而且产生,例如,基于您为该标签提供的集合的一个<option>元素的完整列表。

一如既往,通过阅读the documentation进行学习。

+0

没错,但我想我的困惑是,在servlet中,您通常会手动从请求中检索参数,然后从中构建一个业务对象。只需在控制器方法中将业务对象指定为另一个参数,Spring就可以为您完成这项工作。在弹簧窗体标签的情况下,我不确定它是否会给你带来什么好处,而不是普通的html表格 – user1154644

+0

从请求中填充对象只是基于请求参数工作:如果你的bean有一个属性foo和一个属性栏,Spring将使用名为foo和bar的请求参数来填充它们。就这么简单。 –

+0

对,这很有道理。我见过一些地图作为spring控制器方法的参数,不太清楚这是如何工作的。对于简单的业务对象,我可以看到连接是如何建立的,但不是像地图这样的事情。 – user1154644