Как я могу создать тег выбора, используя JSTL или Стандартные Действия в JSP - PullRequest
10 голосов
/ 10 февраля 2010

Я хочу сделать тег выбора в JSP, где опциями являются перечисления (например, все штаты США). Являются ли они тегом в JSTL или стандартным тегом, который может сделать это, не просматривая список вручную?

Ответы [ 2 ]

16 голосов
/ 10 февраля 2010

Конечно, в JSTL (просто перетащите jstl-1.2.jar в /WEB-INF/lib) есть тег c:forEach. Вам нужно будет только преобразовать (старомодный) Enumeration в современный List или, возможно, Enum, если он жестко запрограммирован в Java. При необходимости вы можете получить Collections#list() для этого, если Enumeration необходимо получить из неизменяемого стороннего API.

Вот демонстрационный пример использования <c:forEach>:

<select name="country">
   <c:forEach items="${countries}" var="country">
       <option value="${country.code}" ${param.country eq country.code ? 'selected' : ''}>${country.name}</option>
   </c:forEach>
</select>

${countries} должен обозначать List<Country> или Country[], который был помещен в любую из page, request, session или application областей & mdash; из которых область действия application является наиболее простым выбором, поскольку предполагается, что список стран является постоянной константой приложения. Вы можете использовать ServletContextListener, чтобы загрузить его один раз и поместить в область приложения при запуске приложения. Country в этом примере является просто классом Javabean (модель) с как минимум двумя свойствами.

Смотри также:

6 голосов
/ 10 февраля 2010

Нет в JSTL. Однако многие фреймворки предоставляют такие дополнительные теги:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...