Is CustomPhaseListener in a package?

If so you need to declare the phaselistener with the full class name like package.CustomPhaseListener

On 6/15/06, B Balakrishnan <[EMAIL PROTECTED]> wrote:
I have created a class that implements PhaseListener interface and registered it in the faces-config.xml lifecycle as follows:

<lifecyle>
<phase-listener>
CustomPhaseListener
</phase-listener>
</lifecyle>

My class code is

import java.util.Iterator;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;

public class CustomPhaseListener implements PhaseListener {

public PhaseId getPhaseId() {
System.out.println("in getphaseid");
return PhaseId.RENDER_RESPONSE;
}

public void beforePhase(PhaseEvent e) {
System.out.println("in before phase");
FacesContext fc = e.getFacesContext();
UIViewRoot root = fc.getViewRoot();

Iterator i = fc.getClientIdsWithMessages();

while(i.hasNext()) {
String clientId = (String) i.next();
UIComponent c = root.findComponent (clientId);
String fieldRef = (String) c.getAttributes().get("fieldRef");
if(fieldRef != null) {
Iterator j = fc.getMessages(clientId);
while(j.hasNext()) {
FacesMessage fm = (FacesMessage)j.next();
fm.setDetail(fm.getDetail() +": "+fieldRef);
}
}
}
}

public void afterPhase(PhaseEvent e) {
System.out.println("in after phase");
}
}

But the methods of the CustomPhaseListener are not being invoked at all. Any ideas why?


Reply via email to