2015-01-13 39 views
-1

我想在我的jsf中的一個bean中使用階段偵聽器,但它不工作。無法在jsf中實現階段偵聽器

類別:

package com.mycompany.creditcard1; 

import java.io.Serializable; 
import javax.annotation.PostConstruct; 
import javax.faces.context.FacesContext; 
import javax.faces.context.Flash; 
import javax.faces.event.PhaseEvent; 
import javax.faces.event.PhaseId; 
import javax.faces.event.PhaseListener; 
import javax.faces.view.ViewScoped; 
import javax.inject.Named; 

@Named(value = "userDetailsLogin1") 
@ViewScoped 
public class UserDetailsLogin1 implements Serializable, PhaseListener { 

    private UserDetails userDetails; 
    Flash flash = FacesContext.getCurrentInstance().getExternalContext().getFlash(); 

    @PostConstruct 
    public void init() { 
     System.out.println("inti"); 
     userDetails = (UserDetails) flash.get("userDetails"); 
     if (userDetails == null) { 
      userDetails = new UserDetails(); 
     } 
    } 

    public UserDetailsLogin1() { 
    } 

    public UserDetails getUserDetails() { 
     return userDetails; 
    } 

    public String action() { 

     flash.put("userDetails", userDetails); 
     return "UserDetailsLogin2?faces-redirect=true"; 

    } 

    @Override 
    public void afterPhase(PhaseEvent pe) { 
     System.out.println("after phase"); 
    } 

    @Override 
    public void beforePhase(PhaseEvent pe) { 
     throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
    } 

    @Override 
    public PhaseId getPhaseId() { 
     return PhaseId.RESTORE_VIEW; 

    } 

} 

面-配置文件:

<?xml version='1.0' encoding='UTF-8'?> 
<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"> 

    <lifecycle> 
     <phase-listener>com.mycompany.creditcard1.MyPhaseListener</phase-listener> 
    </lifecycle> 

錯誤:

無法創建'com.mycompany.creditcard1.MyPhaseListener'的新實例:javax.faces.FacesException:com.mycompany.creditcard1.MyPhaseListener

不明白它爲什麼顯示它? 任何幫助!

回答

1

好吧開始吧,用<phase-listener>com.mycompany.creditcard1.MyPhaseListener</phase-listener>代替<phase-listener>com.mycompany.creditcard1.UserDetailsLogin1</phase-listener> ......你有錯的類名!

此外,我不知道是否將Bean和PhaseListener混合到同一個類中是一種很好的做法...