2017-01-31 3 views
2

У меня есть этот медленный код в моем JSP:Яровая форма: варианты крайне медленно в 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 коллекция сложных объектов?

+2

Я думаю, что есть некоторые преобразования типов, происходящие внутри, когда мы используем тег '

'. Если вы не выполняете сложную логику в цикле 'forEach', рассмотрите использование основного тега'
+0

Нет сложной логики, просто итерации. – Xelian

+0

** Что ** медленно? Создание ответа, отображение HTML ...? – zeroflagL

ответ

1

Как объяснено в Springdocumentation для <options> тега

Совместное использование опциона тег с тегом опций генерирует тот же стандартный HTML, но позволяет явно указать значение в JSP, что только для отображения (где он принадлежит), например строки по умолчанию в примере: «- Выберите».

Атрибут items обычно заполняется коллекцией или массивом объектов предметов. itemValue и itemLabel просто ссылаются на свойства bean-объектов этих объектов объектов, если они указаны; в противном случае сами объекты предметов будут стрифицированы. В качестве альтернативы вы можете указать карту элементов, и в этом случае ключи карты интерпретируются как значения параметров, а значения карты соответствуют меткам опций. Если itemValue и/или itemLabel также должны быть указаны, свойство значения элемента будет применяться к ключу карты, и свойство метки метки применимо к значению карты.

Здесь Spring проверяет свойства bean и перед визуализацией фактического HTML преобразования типов выполняются. Таким образом, это делает много фоновой работы, чтобы обеспечить чистый код для разработчиков (который идет по цене исполнения).

Итак, если для отображения параметров нет специального требования/логики, предпочитайте базовый тег HTML <option>.

 Смежные вопросы

  • Нет связанных вопросов^_^