很简单的问题。如果我有一个字符串列表,我通过 Springs form:options 标记在下拉列表中呈现,如何将 title 属性的值设置为字符串值?
<form:options items="${listOfString}" title=" ?? "/>
或者我会做一个 forEach,但可以用 form:options 标签来完成吗?
谢谢!
很简单的问题。如果我有一个字符串列表,我通过 Springs form:options 标记在下拉列表中呈现,如何将 title 属性的值设置为字符串值?
<form:options items="${listOfString}" title=" ?? "/>
或者我会做一个 forEach,但可以用 form:options 标签来完成吗?
谢谢!
我假设您的意思是有itemLabel
anditemValue
参数,并且您还希望有一个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"
thenentry[itemValue]
计算结果为entry.id
. 整齐嘿?
您可以在这里找到表单背后的代码:options 标签:https ://github.com/spring-projects/spring-framework/blob/master/spring-webmvc/src/main/java/org/springframework/web/ servlet/tags/form/OptionsTag.java
您只需省略 'title' 属性:
<form:options items="${listOfString}"/>