Spring表单:jsp

时间:2017-01-31 08:47:04

标签: spring performance jsp spring-mvc

我在jsp中有这个慢代码:

<form:options itemLabel="name" itemValue="id" items="${view.users}"  />

当我用

替换它时
<c:forEach items="${view.users}" var="user">
            <form:option value="${user.id}">${user.name}                    
            </form:option>
</c:forEach>

对性能有很大影响。我能理解为什么?这是因为 view.users 复杂对象的集合吗?

1 个答案:

答案 0 :(得分:1)

正如Spring documentation中针对<options>标记所述,

  

option标签与options标签的组合使用会生成相同的标准HTML,但允许您在JSP中显式指定仅用于显示的值(它所属的位置),例如示例中的默认字符串: “ - 请选择”。

     

items属性通常使用项目对象的集合或数组填充。如果指定,itemValue和itemLabel只是引用那些项目对象的bean属性;否则,项目对象本身将被字符串化。或者,您可以指定项目的地图,在这种情况下,地图关键字被解释为选项值,地图值对应于选项标签。如果恰好也指定了itemValue和/或itemLabel,则item value属性将应用于map键,而item label属性将应用于map值。

这里,Spring正在检查bean属性,在呈现给实际的HTML之前,类型转换已完成。因此,这使得许多后台工作为开发人员提供干净的代码(这是以性能为代价的)。

因此,如果没有特定的要求/逻辑来显示选项,则更喜欢基本的HTML <option>标记。