非常简单的问题。如果我有一个字符串列表,我在Springs form:options标签的下拉列表中呈现,如何将title属性的值设置为字符串值?
<form:options items="${listOfString}" title=" ?? "/>
或者我会做一个forEach,但是可以用form:options标签吗?
谢谢!
答案 0 :(得分:0)
您只需省略'title'属性:
<form:options items="${listOfString}"/>
答案 1 :(得分:0)
我假设您的意思是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
。嘿嘿?
您可以在此处找到代码背后的代码: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