2010-03-08 48 views
5

Tôi cảm thấy như tôi đang thiếu thứ gì đó - từ những gì có vẻ, JSP đi ra khỏi hộp với sự hỗ trợ cho các thẻ, như là this question's answer cho thấy (anh chàng đang hỏi một câu hỏi tinh khiết-jsp và nhận được câu trả lời liên quan đến thẻ). Nhưng nếu tôi cố gắng chạy mã choBật JavaServerPages Thư viện thẻ chuẩn (JSTL) trong JSP

<c:out value="${myString}"/> 

(với myString được xác định trước, tất nhiên), jsp chỉ viết những dòng trên vào html.

Tôi có phải làm gì thêm để bật không?

Trả lời

8

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):

  1. Tải jstl-1.2.jar.
  2. Đặ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).
  3. 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.jarandstandard.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).

1

Bạn cần phải khai báo taglib ở phía trên cùng của JSP:

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

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

+0

@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

+0

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

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