Я предполагаю, что вы имеете в виду, что есть параметры itemLabel
и itemValue
, и что вы также хотели бы иметь параметр itemTitle
, чтобы вы могли указать имя поля для объекта, который содержит строку дляатрибут title = "".
Так что по этой проблеме: https://jira.springsource.org/browse/SPR-7648
Если это так, я обнаружил, что мне нужно накатить собственное решение.Вот файл .tag
, который я написал для этого:
<%@ tag language="java" pageEncoding="ISO-8859-1"%>
<%@ attribute name="items" type="java.util.Collection" required="true" %>
<%@ attribute name="itemLabel" type="java.lang.String" required="true" %>
<%@ attribute name="itemValue" type="java.lang.String" required="true" %>
<%@ attribute name="itemTitle" type="java.lang.String" required="true" %>
<%@ attribute name="selectedValue" type="java.lang.String" required="true" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:forEach var="entry" items="${items}">
<c:set var="selectedAttrString" value="${entry[itemValue] == selectedValue ? 'selected=\"selected\"' : ''}" />
<option value="${entry[itemValue]}" label="${entry[itemLabel]}" title="${entry[itemTitle]}" ${selectedAttrString} />
</c:forEach>
Я также включил возможность установки выбранного элемента.Я пропустил параметры, связанные с htmlEscape и css, потому что они мне не нужны, но вы можете легко добавить их при необходимости.
Примечание: классная часть заключается в том, что SPeL позволяет вам обращаться к имени поля, используя строку(очень похоже на Javascript), поэтому, если мы предположим, что itemValue = "id"
, то entry[itemValue]
оценивается как entry.id
.Понятно, эй?
Вы можете найти код, расположенный за формой: опциональный тег здесь: https://github.com/spring-projects/spring-framework/blob/master/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/OptionsTag.java