正如您在代码中看到的,我将“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>
答案 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中的任何字段都包含标签。