2008-10-22 9 views
13

tôi dường như nhớ đọc rằng nó có thể tuyên bố chỉ thị taglib như:khai báo chỉ thị JSP taglib trong web.xml

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

trong web.xml. Điều này giúp loại bỏ sự cần thiết phải lặp lại chỉ thị này trong mọi tệp JSP, nơi thẻ taglib được sử dụng. Ai đó có thể cho tôi biết cách các chỉ thị này có thể được thêm vào web.xml không?

+1

Đáng tiếc, vì có giải pháp cho việc này: prelude. Sử dụng phần tử nhóm-thuộc tính jsp-config của phần jsp-config và phần tử bao gồm các phần tử mở đầu của nó, bạn có thể chỉ định một đoạn để được bao gồm trong bất kỳ JSP nào theo biểu thức chính quy của riêng bạn. Bạn chỉ có thể đặt bất kỳ chỉ thị taglib nào bạn muốn trong đó. – nitind

+6

Câu hỏi này chắc chắn không nên bị đóng dưới dạng chủ đề. –

Trả lời

27

Phần tử taglib trong web.xml phục vụ một mục đích khác với chỉ thị taglib mà bạn có ở trên.

Như David đã nói, chỉ thị taglib là bắt buộc trên mỗi trang.

Nếu bạn có nhiều trang sử dụng thẻ taglib phổ biến, bạn có thể tắt phím này bằng cách đặt các chỉ lệnh taglib vào tệp bao gồm và bao gồm tệp này mỗi trang. Nhưng không có vấn đề làm thế nào bạn làm điều đó, chỉ thị taglib phải được trên trang nào đó.

Đó thẻ bạn cần phải bao gồm trên mỗi trang trông như thế này:

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

Nếu bạn có một taglib tùy chỉnh ở một vị trí tùy chỉnh, bạn cũng có thể chỉ định một vị trí tương đối so với gốc webapp:

<%@ taglib prefix="ex" uri="/taglib.tld" %> 

Further reading on the taglib directive

các taglib chỉ thị từ thẻ bản đồ web.xml URI đến vị trí vật lý của taglib của bạn. Nó là tùy chọn kể từ JSP 2.0, vì các thùng chứa tuân thủ sẽ xem xét một tập hợp các vị trí chuẩn để cố gắng tự động khám phá thẻ taglib:/WEB-INF và các thư mục con của nó,/META-INF cũng như các tệp JAR.

Nó trông giống như thế này, trong web.xml:

<taglib> 
    <taglib-uri> 
    http://www.example.com/taglib 
    </taglib-uri> 
    <taglib-location> 
    /taglib.tld 
    </taglib-location> 
</taglib> 

Và taglib được tham chiếu trong trang JSP như thế này (chỉ thị taglib trên mỗi trang là không thể tránh khỏi!):

<%@ taglib prefix="ex" uri="http://www.example.com/taglib" %> 

Điều này tương đương với ví dụ thứ hai tôi đã đưa ra cho chỉ thị taglib ở trên. Sự khác biệt lớn nhất là cách bạn trỏ đến vị trí taglib.

This page chứa thêm một chút thông tin.

+0

tôi nghĩ rằng nó không đúng ví dụ nó vẫn cho lỗi java.lang. ClassNotFoundException: org.apache.taglibs.standard.tei.ImportTEI –

+1

Lời giải thích hay. Tôi nên thêm ở đây là bạn có thể thêm thẻ uri vào tệp mô tả thư viện thẻ (tệp tld) ví dụ: '/ELFunctionTagLibrary 'và sử dụng url này trong các trang jsp của bạn. – skiabox

5

Xin lỗi, bạn hơi nhầm lẫn. Nếu một trang sử dụng thẻ taglib, bạn phải có chỉ thị taglib cho nó trên trang. Bạn có thể đặt các chỉ thị taglib phổ biến trong một tệp bao gồm tất cả các trang của bạn bao gồm chỉ thị bao gồm, nhưng tại thời gian biên dịch, chỉ thị taglib phải ở đó.

Tôi thích KHÔNG có phần tử taglib trong tệp web.xml và thay vào đó có chỉ thị taglib chỉ định giá trị URI được sử dụng trong phần tử "uri" trong TLD bên trong tệp jar taglib trong WEB của bạn -INF/lib.

+0

Cách tiếp cận là gì, nếu tôi đang sử dụng gạch Apache. Tôi có cần phải làm theo cùng, để bao gồm các chỉ thị taglib. Tôi đã cố gắng xác định chỉ thị taglib trong jsp mẫu cơ bản. Nhưng, tôi không thể để có được tài liệu tham khảo của họ trong jsp như tiêu đề, footer và jsp khác được cấu hình với cơ sở mẫu jsp. – srinivas

+0

Có câu trả lời cho câu hỏi trên của tôi liên kết: http://stackoverflow.com/questions/8687873/spring-and-apache-tiles-with-shared-taglib – srinivas