You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by B Balakrishnan <B....@hunterdouglas.com> on 2006/06/15 22:39:37 UTC

CustomPhaseListener is not getting invoked

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? 


Re: CustomPhaseListener is not getting invoked

Posted by Cagatay Civici <ca...@gmail.com>.
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 <B....@hunterdouglas.com> 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?
>
>