0

很简单的问题。如果我有一个字符串列表,我通过 Springs form:options 标记在下拉列表中呈现,如何将 title 属性的值设置为字符串值?

<form:options items="${listOfString}" title=" ?? "/>

或者我会做一个 forEach,但可以用 form:options 标签来完成吗?

谢谢!

4

2 回答 2

0

我假设您的意思是有itemLabelanditemValue参数,并且您还希望有一个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

于 2013-12-12T08:35:54.960 回答
0

您只需省略 'title' 属性:

<form:options items="${listOfString}"/>
于 2012-04-20T16:28:01.253 回答