2010-09-30 19 views
14

Tôi làm cách nào để mã sau hoạt động?Cách sử dụng thẻ JSTL "if" mà không nhận được ".. kiểm tra phân phối không chấp nhận bất kỳ biểu thức nào"

 <c:if test="${null != searchResults}" > 
      <c:forEach items="${searchResults}" var="result" varStatus="status"> 

Tôi đã thử nhiều biến thể khác nhau của việc này, chẳng hạn như:

<c:if test="${searchWasPerformed}" > 

hoặc

<c:if test="<%=request.getAttribute("searchWasPerformed") %>" > 

và thậm chí

<% boolean b = null != request.getAttribute("searchResults"); %> 
    <c:if test="${b}" > 

nào trông thật sự xấu xí:/ Nhưng tôi tiếp tục với hoa giấy ng the

org.apache.jasper.JasperException: /WEB-INF/jsp/admin/admin-index.jsp(29,2) PWC6236: According to TLD or attribute directive in tag file, attribute test does not accept any expressions 

Làm cách nào để tôi thực hiện việc này?

+0

mã ban đầu của bạn sẽ hoạt động. Thông điệp ngoại lệ cho nó là gì? Phiên bản JSP của bạn là gì? (và phiên bản của tomcat, nếu bạn sử dụng nó) – Bozho

+0

Thông báo ngoại lệ là thông báo ở cuối bài đăng của tôi và máy chủ tôi đang sử dụng là glassfish v3. :> Như đã nêu dưới đây, vấn đề là một URI lỗi thời! Cảm ơn một lần nữa. – Erik

+0

Câu hỏi hay! Tôi đã có vấn đề chính xác này xảy ra với tôi ngày hôm qua. Bây giờ tôi có thể thấy rằng nó được gây ra bởi tôi sao chép và dán mã mẫu từ một bài diễn đàn đã được năm tuổi. –

Trả lời

22

Kiểm tra phiên bản thẻ tag JSTL bạn sử dụng. Nó phải là 1,1, vì vậy bạn nên có (lưu ý URI):

<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %> 
+0

Cảm ơn cả hai, URI dường như đã cũ: http://java.sun.com/jstl/core – Erik

+1

@Erik: Đó là URI JSTL 1.0. Điều này không tốt với JSP 2.0 khi bạn gặp phải. – BalusC

Các vấn đề liên quan