2011-10-27 27 views
6

Gần đây chúng tôi đã nâng cấp từ WebSphere Portal v6.1 lên v7.0 và trong quá trình này, chúng tôi hiện có sẵn JSF 1.2. Tạo một dự án Portlet mới trong Rad 8 tạo một faces-config.xml với mục sau đâyLoại trình phân giải biến API không còn được dùng sau JSF 1.1. Sử dụng el-resolver thay vì

<application> 
    <state-manager>com.ibm.faces.application.DevelopmentStateManager</state-manager> 
    <variable-resolver>com.ibm.faces.portlet.PortletVariableResolver</variable-resolver> 
</application> 

Và sau đó than phiền: Loại trình phân giải biến API không được dùng nữa sau JSF 1.1. Sử dụng el-resolver để thay thế.

Thật không may là tôi không thể tìm thấy câu trả lời trên các trang của IBM để giải quyết vấn đề sử dụng.

Edit:

System.out.println("Resolver: " + PortalUtil.getFacesContext().getApplication().getELResolver()); 

=> Resolver: [email protected]

Thêm một mục vào mặt-config

<el-resolver>com.sun.faces.el.FacesCompositeELResolver</el-resolver> 

Có hoặc không loại bỏ biến giải quyết dẫn đến:

java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.context.FacesContextFactory 
    at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:270) 
    at javax.faces.webapp.FacesServlet.init(FacesServlet.java:164) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:358) 
    ... 89 more 

PMR với IBM đã mở ...

+0

Điều này có giúp ích gì không? http://download.oracle.com/docs/cd/E17802_01/products/products/jsp/2.1/docs/jsp-2_1-pfd2/javax/el/ELResolver.html – Brad

+0

Thông điệp cảnh báo từ RAD: Class javax.el. ELResolver phải là bê tông (không trừu tượng). – Stefan

+0

Chúng tôi sử dụng Spring và có org.springframework.web.jsf.DelegatingVariableResolver. Nó hoạt động tốt.Có thể thử thêm một phụ thuộc cho trình phân giải này? Đặt nó như org.springframework.web.jsf.DelegatingVariableResolver JMelnik

Trả lời

1

IBMs đối phó với PMR:

Q - Điều gì có thể là hậu quả của việc bỏ qua các cảnh báo?

Trả lời - Người dùng vẫn có thể sử dụng trình phân giải biến, chức năng sẽ không bị ảnh hưởng. [Thẻ này sẽ được duy trì để tương thích ngược]

Q - Tại sao faces-config.xml được tạo vẫn sử dụng phương pháp không được chấp nhận?

Ans - Chúng tôi đang sử dụng bộ giải quyết biến để giải quyết các biến portlet, mà sẽ làm việc tốt ngay cả với JSF 1.2

Q - Sẽ có hoặc là có một el-Resolver cho portlet?

Trả lời - Sẽ có trình giải quyết el cho các portlet. Nó sẽ được cung cấp trong cầu nối JSF portlet 2.0 sẽ được chuyển thành bản cập nhật cho WAS. Nó hiện đang trong giai đoạn lập kế hoạch nên tôi không thể cung cấp cho bạn phiên bản chính xác mà nó sẽ được tìm thấy.

0

Tôi ghét phải nói điều đó, nhưng nếu chúng ta đang nói về một ứng dụng web không đồng bộ, thì bạn đã chết trong nước.

JSF 1.2 giới thiệu một "lỗi được biết đến" (Tôi luôn thích cụm từ đó) là lớp FaceletsRenderer khiến quý vị không đồng bộ render các thành phần JSF (vì tất cả aynchronousity trong JSF sử dụng một giảFacesContext; không phải là một chức năng mà có thể được sử dụng để hiển thị). Bạn cần JSF 2.1 thân thiện với JEE6 cho rằng, nếu không bạn sẽ cần một giải pháp hoàn toàn khác, như @D1e được chỉ ra trong nhận xét của người đó. Chúc may mắn cho tổ chức của bạn.

+0

Tôi nhầm lẫn, cách ứng dụng web không đồng bộ có thể liên quan đến câu hỏi. Đặc biệt vì stacktrace chứa 'FacesServlet.init' được thực thi trước khi xử lý yêu cầu. –

+0

Hm không sử dụng Facelets. – Stefan

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