Tôi có một bản cài đặt weblog 10.3.3 và dường như có vấn đề với các thẻ JSP đệ quy. Trên internet tôi đã tìm thấy một số người khác gặp phải cùng một vấn đề (here và here), nhưng không có giải pháp. Một số người cho rằng nó được sửa trong Weblogic 12, hoặc đang làm việc trong 9, nhưng tôi không thể xác nhận điều này.Thẻ JSP Weblogic và đệ quy
Ứng dụng được tạo bằng Spring/Spring Roo/Apache Tiles/jspx. Lớp mô hình đang được hiển thị là một cái gì đó như:
public class Programme {
private String name;
private final List<Programme> programmes = new ArrayList<Programme>();
...(getter/setter)...
}
Sau đó, tôi có một tagx như thế này:
<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:coursedataimport="urn:jsptagdir:/WEB-INF/tags/coursedataimport" version="2.0">
<jsp:output omit-xml-declaration="yes" />
<jsp:directive.attribute name="programme" type="package.Programme" required="true" rtexprvalue="true" />
<c:out value="${programme.name}" />
<ul>
<c:forEach var="p" items="${programme.programmes}">
<li><coursedataimport:programme programme="${p}" /></li>
</c:forEach>
</ul>
</jsp:root>
này không hoạt động. Khi yêu cầu trang, vùng chứa ứng dụng dường như bị lỗi (có thể một số tràn ngăn xếp, nhưng tôi không thể tìm thấy nó trong nhật ký) và ngữ cảnh ứng dụng được tải lại. Trong Tomcat 7 nó hoạt động tốt.
Trường hợp ngoại lệ được thể hiện là một cái gì đó như thế này, nhưng tôi không chắc chắn nếu nó liên quan (vì nó nói về trang lỗi):
[ServletContext @ 483.389.576 [ứng dụng: Ứng dụng-tai-0 mô-đun : đường dẫn appmodule:/CONTEXTROOT spec-version: 2.5]] Đã xảy ra sự cố khi phục vụ trang lỗi. org.springframework.web.util.NestedServletException: Yêu cầu xử lý không thành công; ngoại lệ lồng nhau là java.lang.ClassCastException: org.apache.tiles.ArrayStack tại org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:894) tại org.springframework.web.servlet.FrameworkServlet.doGet (FrameworkServlet.java:779) tại javax.servlet.http.HttpServlet.service (HttpServlet.java:707) tại javax.servlet.http.HttpServlet.service (HttpServlet.java:821) tại ...
Có ai đã từng gặp phải những vấn đề này trước đây hay không, hoặc có ai biết về việc sửa chữa không? Bất kỳ mẹo nào về cách gỡ lỗi này hoặc cách giải quyết thẻ đệ quy (vì tôi muốn hiển thị một cây, đó là một chút thách thức). Cảm ơn trước.
Bạn đang cố gắng gọi thẻ chương trình đệ quy? Tôi có một vấn đề tương tự. Trong khi gọi đệ quy một tập tin thẻ nó hoạt động trong Tomcat 6, nhưng không phải trong Weblogic 11. –
Vâng, đó là vấn đề. Tomcat làm việc tốt với nó, nhưng Weblogic là một pita. Chúng tôi không bao giờ tìm thấy một giải pháp cho việc này ngoài việc viết lại mã để nó không sử dụng một thẻ đệ quy. – MikeN