0

正如您在代码中看到的,我将“ttypes”发送到选择选项菜单。“ttypes”包括一个包含两个元素的列表,我想将这些元素显示为选项,但是当我执行该操作时,jtsl 创建了两个选项,但这些选项没有任何值。我什么都看不到。

我在下面发布了一个列表作为属性。

model.addAttribute("ttypes", technicalTypeService.getTechnicalType());

然后我想在选择选项菜单中显示该列表,但我看不到选择选项菜单中的值。谁能帮我?

<c:forEach items="${ttypes}" varStatus="i">
<c:set var="name" value="${ttypes[i.index].name}" />
<option value="${name}"</option>
</c:forEach>
4

2 回答 2

1

免责声明:我将简单地假设无效的 HTML 语法(缺少>)只是由于准备问题时的粗心造成的。


您肯定已经设置了选项值。在您喜欢的网络浏览器中右键单击该页面,然后选择查看源代码。仔细看,它们就在生成的 HTML 输出中。

您只是忘记设置选项标签。标签对最终用户可见,而值对最终用户确实不可见。您可以通过设置<option>元素的主体来设置选项标签。

<c:forEach items="${ttypes}" varStatus="i">
    <c:set var="name" value="${ttypes[i.index].name}" />
    <option value="${name}">${name}</option>
</c:forEach>

一个不太笨拙的方法是:

<c:forEach items="${ttypes}" var="ttype">
    <option value="${ttype.name}">${ttype.name}</option>
</c:forEach>

应该注意的是,通常一些技术 ID 被用作选项值。

<c:forEach items="${ttypes}" var="ttype">
    <option value="${ttype.id}">${ttype.name}</option>
</c:forEach>

还应注意的是,当您省略该值时,标签会隐含地成为选项值。

<c:forEach items="${ttypes}" var="ttype">
    <option>${ttype.name}</option>
</c:forEach>

最后需要注意的是,这个问题与JSP/JSTL/Spring无关。他们在这个问题的上下文中只是充当 HTML 代码生成器。您的具体问题仅与基本 HTML 有关。

也可以看看:

于 2013-09-27T16:13:20.427 回答
0

尝试这样的事情:

<c:forEach items="${ttypes}" var="ttype" varStatus="i">
   <option value="${ttype.name}">my label ?</option>
</c:forEach>

替换“我的标签?” ttype 中的任何字段都包含标签。

于 2013-09-27T16:12:09.523 回答