【发布时间】:2012-02-11 20:16:52
【问题描述】:
我遇到了 JSTL 和空运算符的问题。我已经做了几个简单的页面,一切正常,但现在我有:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<body>
<form action="/Projekt/myaccount" method="post">
<table border="1">
<tr>
<td>Artist</td>
<td>Record Name</td>
<td>Delete</td>
</tr>
<c:forEach var="item" items="${records}">
<tr>
<td>${item.artist}</td>
<td>${item.recordName}</td>
<td>
<input type="checkbox" name='${item.recordName}|${item.recordName}'/>
</td>
</tr>
</c:forEach>
</table>
<hr/>
<input type="submit" name="back" value="back"/>
<c:if test='${not empty "${records}"}'>
<input type="submit" name="delete" value="delete selected"/>
</c:if>
</form>
</body>
</html>
现在无论我是否设置了记录属性,删除按钮都会显示:
<c:if test='${not empty "${records}"}'>
<input type="submit" name="delete" value="delete selected"/>
</c:if>
在正常情况下记录属性我传递 ArrayList 然后使用 foreach,但有时 ArrayList 是空的,所以在这些情况下我不想显示删除按钮,我争取实现这一点的最简单方法是使用这个空运算符。我在哪里犯错了?
我什至尝试手动将此属性设置为空:
if (ar.size() != 0)
request.setAttribute("records", ar);
else
request.setAttribute("records",null);
编辑: @Qwe:是的,你是对的,它之前对我有用,因为我测试了属性是否以我的方式为空,它总是正确的,因为我使用了错误的构造,但它有效,因为我只想显示一个字符串,如果有no String 什么都没有出现,所以我认为一切正常。
【问题讨论】: