2013-04-10 27 views
5

Tôi đang sử dụng MyFaces 2.1.9 và PrimeFaces 3.5. Tôi đã triển khai trình kết xuất tùy chỉnh cho <p:inputText>. Điều này làm việc tốt ở nhà với Tomcat. Nhưng điều này không làm việc với Websphere. Tôi đã đặt các điểm ngắt trong lớp trình kết xuất tùy chỉnh, nhưng chúng không bao giờ được nhấn. Tôi cũng không thấy gì trong nhật ký của mình. Tuy nhiên, khi tôi đăng ký trình kết xuất tùy chỉnh rất giống nhau trên tiêu chuẩn JSF <h:inputText>, thì nó hoạt động tốt.Trình kết xuất tùy chỉnh cho thành phần PrimeFaces hoạt động tốt trong Tomcat, nhưng không phải trong Websphere

Tôi đã đăng ký nó như sau trong faces-config.xml:

<render-kit> 
    <renderer> 
     <component-family>org.primefaces.component</component-family> 
     <renderer-type>org.primefaces.component.InputTextRenderer</renderer-type> 
     <renderer-class>xxx.xxx.xxx.MyInputRenderer</renderer-class> 
    </renderer> 
</render-kit> 

Làm thế nào tôi có thể khắc phục việc đăng ký của các renderer tùy chỉnh?

+1

Bắt đầu với điểm ngắt trên 'RenderKit # addRenderer()'. – BalusC

+0

Cảm ơn! Bây giờ tôi biết rằng trình kết xuất của tôi được xử lý trước tiên, khi đó trình kết xuất thông thường xuất hiện trong addREnderer và ghi đè của tôi! Làm sao tôi có thể giải quyết việc này? – KTrum

+0

Được rồi, điều đó thực sự giải thích nó. 'Faces-config.xml' ở đâu? Trong tệp JAR mô-đun tùy chỉnh trong '/ WEB-INF/lib' hoặc trực tiếp trong'/WEB-INF' của webapp? Nếu trong JAR, thì thứ tự tải là không xác định. Nếu nó được tải trước phiên bản PrimeFaces thì bạn sẽ gặp phải vấn đề này. – BalusC

Trả lời

7

Trình kết xuất tùy chỉnh cần ghi đè lên trình kết xuất của thư viện thành phần bên thứ ba cần phải được đăng ký trong riêng faces-config.xml của webapp, chứ không phải trong một faces-config.xml được đóng trong một JAR khác trong /WEB-INF/lib. Thứ tự tải tệp JAR không được chỉ định, vì vậy có thể xảy ra khi trình kết xuất tùy chỉnh được tải và đăng ký trước một trong thư viện thành phần bên thứ 3 mà bạn muốn ghi đè, giống hệt như khi bạn đối mặt.