2010-10-26 2 views

ответ

2

Для этого можно использовать <c:forEach>. Каждая итерация дает Map.Entry назад, которая, в свою очередь, имеет getKey() и getValue() методов. Если предположить, что у Вас есть Map<String, String> со значениями опций в качестве ключей карты и опционных этикеток в качестве значений карты, вот пример:

<select name="foo"> 
    <c:forEach items="${bean.map}" var="entry"> 
     <option value="${entry.key}" ${entry.key == param.foo ? 'selected' : ''}>${entry.value}</option> 
    </c:forEach> 
</select> 

Что касается замены устаревших Джакарты TagLib, взглянуть на рамках MVC, который предлагает библиотеки тегов для привязки модели к представлению. Например, Struts 1.x (по существу, небольшая эволюция старого ярлыка Jakarta taglib), Struts 2.x (дальнейшая эволюция) и JSF (другая эволюция в том же направлении, что и Struts 2.x).

Вот пример визуализации HTML <select> в JSF.

<h:selectOneMenu id="foo" value="#{bean.selectedItem}"> 
    <f:selectItems value="#{bean.selectItems}" /> 
</h:selectOneMenu> 

JSF связывает его прозрачно с моделью без необходимости писать собственный контроллер (сервлет).

+0

Standard JSTL является путь, если вы используете JSP-страницы. Я начинаю предпочитать Velocity для тех же самых вариантов использования. – duffymo

+0

И я сам предпочитаю Facelets. Но это еще одна история :) – BalusC

1

Этот проект был отстранен от чердака, поскольку почти все функции являются доступными, используя стандартную реализацию, внедренную в прикладные серверы.

http://attic.apache.org/projects/jakarta-taglibs.html

Этот проект жив в http://tomcat.apache.org/taglibs/

+0

JSTL возникла только из небольшой части ярлыка Jakarta. OP по существу ищет замену тега [''] (http://jakarta.apache.org/taglibs/doc/input-doc/usage.html#select), который isn ' t доступно в JSTL. – BalusC

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