Spring表单:String中的选项标题

时间:2011-06-22 13:20:03

标签: jsp spring-mvc jsp-tags tld

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:0)

您只需省略'title'属性:

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

答案 1 :(得分:0)

我假设您的意思是itemLabelitemValue参数,并且您还希望拥有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。嘿嘿?

您可以在此处找到代码背后的代码:options tag btw:https://github.com/spring-projects/spring-framework/blob/master/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/OptionsTag.java