Spring 形式:来自字符串的选项标题

发布于 2024-11-16 18:49:04 字数 235 浏览 8 评论 0原文

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

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

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

谢谢!

Pretty simple question. If I have a list of strings, which I render in a dropdown through Springs form:options tag, how do I set the value of the title property to be the strings value?

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

Alternatively I would do a forEach, but can it be done with a form:options tag?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

德意的啸 2024-11-23 18:49:04

您只需省略 'title' 属性即可:

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

You just omit the 'title' attribute:

<form:options items="${listOfString}"/>
说好的呢 2024-11-23 18:49:04

我假设您的意思是有 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

I'm assuming you mean that there are the itemLabel and itemValue params and that you would also like to have an itemTitle param so you can specify the field name on the object that contains the string to become a title="" attribute.

So relating to this issue: https://jira.springsource.org/browse/SPR-7648

If that's the case, I found that I had to roll my own solution. Here's the .tag file that I wrote to do it:

<%@ 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>

I've also included capability to set the selected item. I've left out the htmlEscape and css related params because I didn't require them but you could easily add them if required.

Note: the cool part is that SPeL lets you address a field name using a string (much like Javascript) so if we assume itemValue = "id" then entry[itemValue] evaluates to entry.id. Neat hey?

You can find the code behind the form:options tag here btw: https://github.com/spring-projects/spring-framework/blob/master/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/OptionsTag.java

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文