У меня проблема с 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 пуст, поэтому в таких ситуациях я не хочу, чтобы отображалась кнопка удаления, я боролся с тем, что самый простой способ добиться этого - использовать этот пустой оператор.Где я делаю ошибку?
Я даже пытался вручную установить для этого атрибута значение null:
if (ar.size() != 0)
request.setAttribute("records", ar);
else
request.setAttribute("records",null);
РЕДАКТИРОВАТЬ: @Qwe: да, вы правы, у меня это сработало раньше, потому что я проверял, был ли атрибут пустым на моем пути, это всегда было правдой, потому что я использовал неправильную конструкцию, но это сработало, потому что я просто хотел показать одну строку, если она была no String ничего не появилось, поэтому я подумал, что все работает нормально.