Tôi đọc Java EE 7 Hướng dẫn từ http://docs.oracle.com/javaee/7/tutorial/doc/jsf-facelets005.htm#GIQZRSử dụng namespace xmlns.jcp.org mới trên composit gây java.lang.NullPointerException tại java.util.concurrent.ConcurrentHashMap.putIfAbsent
Sau khi tôi gõ mã ví dụ trong chương 8.5 Thành phần hỗn hợp trong IDE của tôi và chạy ví dụ trên GlassFish4.0, tôi gặp lỗi
java.lang.NullPointerException
at java.util.concurrent.ConcurrentHashMap.putIfAbsent(ConcurrentHashMap.java:1078)
at com.sun.faces.util.Cache.get(Cache.java:116)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.getComponentMetadata(FaceletViewHandlingStrategy.java:237)
at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:951)
at javax.faces.application.ApplicationWrapper.createComponent(ApplicationWrapper.java:648)
Sau đó, tôi kiểm tra phiên bản cũ của hướng dẫn này, tôi thấy có sự khác biệt.
Trong Java EE phiên bản 7 mã email.xhtml là như sau:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:composite="http://xmlns.jcp.org/jsf/composite"
xmlns:h="http://xmlns.jcp.org/jsf/html">
<h:head>
<title>This content will not be displayed</title>
</h:head>
<h:body>
<composite:interface>
<composite:attribute name="value" required="false"/>
</composite:interface>
<composite:implementation>
<h:outputLabel value="Email id: "></h:outputLabel>
<h:inputText value="#{cc.attrs.value}"></h:inputText>
</composite:implementation>
</h:body>
</html>
Nhưng trong 6 phiên bản Java EE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:composite="http://java.sun.com/jsf/composite"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>This content will not be displayed</title>
</h:head>
<h:body>
<composite:interface>
<composite:attribute name="value" required="false"/>
</composite:interface>
<composite:implementation>
<h:outputLabel value="Email id: "></h:outputLabel>
<h:inputText value="#{cc.attrs.value}"></h:inputText>
</composite:implementation>
</h:body>
</html>
Sau khi tôi đã thay đổi mã Java EE 6 phiên bản , lỗi đã biến mất. Sự khác biệt là không gian tên. Tôi không biết đây có phải là vấn đề của hướng dẫn này hay không. Có biết không?
Tôi đã tải xuống jar Mojarra 2.2.2 từ liên kết và đặt nó vào/mô-đun. Nhưng tôi vẫn có cùng một vấn đề. Tôi nghĩ tôi nên đợi GlassFish 4.1. Dù sao, cảm ơn câu trả lời của bạn. – Chris
Tôi đã có thể tái tạo sự cố của bạn trên thiết lập GF4 chưa được sửa đổi. Trường hợp sử dụng của bạn bắt đầu hoạt động cho tôi sau khi tôi nâng cấp nó với Mojarra 2.2.2. Bạn đã dọn dẹp các thư mục làm việc/cache/triển khai GF4 chưa? Bạn quản lý máy chủ như thế nào? Độc lập hoặc thông qua một IDE? Lưu ý rằng tôi thường không đăng câu trả lời nếu tôi chưa xác nhận/đã trải qua chính vấn đề đó. – BalusC
Xin lỗi vì những bình luận đầu tiên. Tôi quên đổi tên tệp jar để cho GlassFish tải nó trước. Nó hoạt dộng bây giờ. Cảm ơn – Chris