【问题标题】:Spring form:options title from String弹簧形式:来自字符串的选项标题
【发布时间】:2011-06-22 13:20:02
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

  • 所以,我猜这不能完成? :)
  • 您是说您希望标题是列表中所有字符串的串联吗?还是别的什么?

标签: jsp spring-mvc jsp-tags tld


【解决方案1】:

你只是省略了'title'属性:

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

【讨论】:

  • 嗯.. 你的意思是“标题”属性还是选项标签?
【解决方案2】:

我假设您的意思是有 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。干净吗?

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多