2011-07-25 10 views
7

Tôi đã đọc các bài sau đây mà was very helpful Migrating from JSF 1.2 to JSF 2.0Chuyển từ Facelets 1,1 đến faclets 2.0 - FaceletViewHandler

nhưng tôi đang gặp một vấn đề với sự di cư như tôi có một handler xem tùy chỉnh mà kéo dài từ FaceletViewHandler - đây không phải là một phần của faclets 2.

tôi di chuyển trên JBoss 4.2.2 như sau: - JSF 1.2 để JSF 2.0

tôi cũng muốn di chuyển các faclets - mà tôi có một vấn đề được mô tả ở trên.

Trong đơn đăng ký của mình, tôi cũng đang sử dụng Tomahawk - có vấn đề gì với việc di chuyển này không?

Xin cảm ơn trước.

Elico.

Trả lời

7

Phải, bạn cần thay thế FaceletViewHandler theo ViewHandlerWrapper.

Vì vậy, cơ bản FaceletViewHandler thực hiện như sau:

import javax.faces.application.ViewHandler; 
import com.sun.facelets.FaceletViewHandler; 

public class MyViewHandler extends FaceletViewHandler { 

    public MyViewHandler(ViewHandler parent) { 
     super(parent); 
    } 

    // ... 
} 

cần được cập nhật như sau:

import javax.faces.application.ViewHandler; 
import javax.faces.application.ViewHandlerWrapper; 

public class MyViewHandler extends ViewHandlerWrapper { 

    private ViewHandler wrapped; 

    public MyViewHandler(ViewHandler wrapped) { 
     this.wrapped = wrapped; 
    } 

    @Override 
    public ViewHandler getWrapped() { 
     return wrapped; 
    } 

    // ... 
} 

Tôi đã cập nhật câu trả lời của tôi về vấn đề di cư cho phù hợp.

0

Để kích hoạt MyViewHandler ví dụ: đối với JEE7, WEB-INF/faces-config.xml nên được xác định như sau:

<?xml version="1.0"?> 
<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
      http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"> 
    <application> 
     <view-handler>pkg.MyViewHandler</view-handler> 
    </application> 
</faces-config>