hỗ trợ JSTL là phụ thuộc vào appserver/servletcontainer sử dụng. Một số tàu với JSTL, những người khác thì không. Điều này là bất kể phiên bản JSP/Servlet. Ví dụ Sun Glassfish (như là một full fledged triển khai Java EE) gửi với JSTL ra khỏi hộp và ví dụ Apache Tomcat (như là một đơn giản JSP/Servlet thực hiện) thì không. Đối với họ, bạn sẽ cần phải cài đặt JSTL cho mình.
Nó thực sự khá đơn giản (giả sử bạn đang sử dụng Servlet 2.5 hoặc mới hơn):
- Tải jstl-1.2.jar.
- Đặt/sao chép nó trong thư mục
/WEB-INF/lib
của webapp (là một phần của đường dẫn lớp mặc định của webapp).
Khai báo các thẻ ở đầu JSP theo this JSTL documentation (nhấp vào bất kỳ thẻ taglib nào để xem ví dụ khai báo). Đối với JSTL core nó như sau:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Đó là tất cả. Nếu bạn (vẫn) trên Servlet 2.4, thì bạn sẽ cần tải xuống jstl.jar
andstandard.jar
thay vì (là một phần của JSTL 1.1). Còn lại của các bước là như nhau (chỉ cần đặt trong classpath và tuyên bố ở trên cùng của JSP).
Bạn có thể nhận thấy rằng một số hướng dẫn trực tuyến kém sẽ gợi ý trích xuất tệp JAR và làm lộn xộn trang web web.xml
của webapp với các khai báo TLD. Bạn không bao giờ nên làm điều đó, đây là một gợi ý sai gây ra bởi sự thay đổi trong taglib URI trong bước JSTL 1.0 -> JSTL 1.1. Thay vì cập nhật URI taglib trong JSP, những người đã quyết định xác định lại URI taglib cũ trong web.xml
và nó đã trở thành một huyền thoại.
Bản thân JSP chỉ giao các thẻ <jsp:xxx>
ra khỏi hộp. Bạn có thể tìm thấy tất cả chúng trong this document (thực sự là khá cũ, nhưng không thay đổi tối đa với JSP 2.2 hiện tại).
Cảm ơn! điều này trông giống như một bước đi đúng hướng, nhưng vẫn không phải là một câu trả lời chính xác, vì tôi có ngoại lệ 'org.apache.jasper.JasperException: URI tuyệt đối: http://java.sun.com/jsp/jstl/core không thể được giải quyết trong tệp web.xml hoặc tệp jar được triển khai với ứng dụng này ' Nếu tôi cần cài đặt gì đó, điều đó là tốt - nhưng tôi nghĩ taglib này xuất hiện "ngoài hộp" với jsp. Bạn có thể cân nhắc thêm câu trả lời cho câu trả lời này không? – olamundo
@Noam: Nó chỉ đi ra khỏi hộp trên một số phiên bản của JSP (2.0 trở lên, trong trường hợp này). Nhưng bạn không cho chúng tôi biết bất cứ điều gì về thiết lập của bạn, vì vậy tôi không thể cung cấp cho bạn câu trả lời tốt hơn. – skaffman
skaffman, điều này thực sự là không đúng sự thật. Điều này phụ thuộc vào máy chủ được sử dụng. – BalusC