2009-02-27 32 views
6

Tôi đang cố gắng chạy một ứng dụng trong cầu tàu chạy tốt trong Tomcat 5.5. Ứng dụng sử dụng servlet 2.4 và JSP 2.0.Jasper trong Jetty 6 ném ngoại lệ cho thẻ JSTL

Jetty/Jasper được ném ngoại lệ này:

org.apache.jasper.JasperException: /WEB-INF/tiles/layout/main.jsp(85,55) PWC6340: According to the TLD, rtexprvalue is true, and deferred-value is specified for the attribute items of the tag handler org.apache.taglibs.standard.tag.rt.core.ForTokensTag, but the argument for the setter method is not a java.lang.Object 

Một điều kỳ lạ, tôi không thể tìm thấy bất cứ nơi nào TLD. Dường như nó có được nó bằng phép thuật mà tôi không hiểu. Nó có thể nhận được một TLD sai?

Thật khó để biết nơi tải trang web org.apache.taglibs.standard.tag.rt.core.ForTokensTag. Eclipse không tìm thấy nó trong đường dẫn tải của dự án.

Bất kỳ gợi ý đón ...

Trả lời

6

Jetty bao gồm thư viện JSTL của riêng mình và không có nhu cầu bao gồm lọ tiêu chuẩn và lõi jakrta taglib của.

Nếu bạn đặt các thẻ jakartat taglib vào ứng dụng web của bạn thì có xung đột trong thẻ forTokens gây ra lỗi này trong khi các thẻ khác hoạt động tốt. Tôi đề nghị loại bỏ việc thực hiện taglib jakarta từ ứng dụng web của bạn và dựa vào Jetty, hoặc ngừng sử dụng forTokens.

4

@Guss là chính xác, cách duy nhất có vẻ là tránh sử dụng c:forTokens.

dụ thay thế cho c:forTokens sử dụng c:forEach:

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

<c:forTokens items="${input}" delims="," var="i"> 
    <!-- do stuff with ${i} --> 
</c:forTokens> 

<c:forEach items="${fn:split(input,',')}" var="i"> 
    <!-- do stuff with ${i} --> 
</c:forEach> 
+0

@Guss @Gareth Cảm ơn thông tin, tôi đã cùng một vấn đề. – jomaora

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