选项标签不会显示

时间:2013-09-27 16:08:12

标签: spring jsp jstl

正如您在代码中看到的,我将“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>

2 个答案:

答案 0 :(得分:1)

免责声明:我会谨慎地假设无效的HTML语法(缺少>)只是在准备问题时粗心造成的。 < / p>


您肯定设置了选项值。右键单击您喜欢的webbrowser中的页面,然后选择查看源。仔细观察,它们就在生成的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有关。

另见:

答案 1 :(得分:0)

尝试类似的东西:

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

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