Which component fired phase listener ?

Hi,
- I have a custome PagePhaseListener and I would like to know which component of a page fired the listener. Something like:
public void beforePhase(PagePhaseEvent event) {
// log the event.getSource().toString()
- However the code event.getSource().toString() returns the controller object itself and not the object which fired the lifecycle.
Thank you in advance.

I could get which component fired an adf page lifecycle inspection the resquest. Here is the code:
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
Map requestMap = externalContext.getRequestMap();
Set set = requestMap.entrySet();
Iterator i = set.iterator();
while(i.hasNext()) {
Map.Entry me = (Map.Entry)i.next();
ILogger.log(this.getClass(), ILogger.TRACE, "request map entry: " + "key: " + me.getKey() + " value: " + me.getValue());
Inserting this code on my custom phase listener I could verify that my master detail implementation was fireing two many requests and what component was responsible of that. Look for keys oracle.adfinternal.view.faces.event.rich.ClientEvents key and oracle.adfinternal.view.faces.renderkit.newStreamingRecords

Similar Messages

  • Determine which component fired an action

    I don't see anywhere where I can determine from an IWDCustomEvent which component fired the event.
    I was hoping to setup a help system and wanted one single method to handle all the help events. It was my hope to determine which component fired the event that called the method and use that to determine which text to display.
    Any help would be appreciated.

    You can use event parameter mapping for this. Example: You have 2 buttons "Button1", "Button2" and assign the same action to their "onAction" event.
    Now you can add a parameter "button" to the action, and use parameter mapping code (or declaratively, if available in your IDE).
    wdDoModifyView(...)
      if (firstTime)
        IWDButton button1 = (IWDButton) view.getElement("Button1");
        button1.mappingOfOnAction().addParameter("button", button1.getId());
        IWDButton button2 = (IWDButton) view.getElement("Button2");
        button2.mappingOfOnAction().addParameter("button", button2.getId());
    Then action handler parameter "button" will contain the ID of the button that triggered the action.
    Armin

  • Ajax component, phase listener and findComponent help

    Hello,
    I have a component that issues an Ajax Request. This request is collected by a phase-listener and then processed, however I am having difficulties finding the component that I want to re-render.
    Is there a common approach for getting hold of components from a PhaseListener ? My scenario is:
    When the user clicks and drags inside my component, I want to register the X-axis drag with a ValueChangeListener. (The component has a valueChangeListener="" attribute).
    I am able to get the X-axis drag amount sent via Axis and into the PhaseListener, but at this point I am stuck. I now need to get hold of my component, and tell it how much to move the X-axis.
    Any help is very much appreciated!

    ok! i know for  initial requests  (when a user requesting the page for the first time ) the "JavaServer Faces implementation creates an empty view during restore View phase and the life cycle advances to the render response phase".
    so i think it is impossible to change Uicomponent state in phase listener !!!!   but how can i change Uicomponent attribute before page send to user's browser ?!!

  • Find out which component on the UI is listening and changing to the click event?

    Hello Forum,
    Is there a way in flex to know which component is taking the click event which is being bubbled to the topLevelApplication. I'm clicking it and some container in the parent hierarchy is invalidating/refreshing the screen on click, so the child ficker's on click.

    You need to put traces or alerts for each container till topLevelApplication, in order to know which is flickering the click...
    Hope you got my point!!!
    If this post answers your question or helps, please kindly mark it as such.

  • Trouble with Phase Listener?

    I am having a problem getting my page beans' "init", "preprocess" and "prerender" methods to fire. My page beans are inherited from "com.sun.jsfcl.app.AbstractPageBean" which do have these methods defined. From what I've found, it appears that my problem is a lack of a "phase-listener" in my faces-config.xml file. How should this be configured? If I put in:
    <lifecycle>
    <phase-listener>com.sun.jsfcl.app.AbstractPageBean</phase-listener>
    </lifecycle>
    I get an error that the phase listener can't be instantiated (which makes sense, it is abstract). How do I configure my application so that the "init", "preprocess" and "prerender" methods fire?
    Thanks,
    Lonnie

    I have absolutely no idea what you're talking about. This is not JSF specific.
    Maybe you're using some additional JSF component library which offers this stuff. I guess that it is Woodstock again. In any way, you should consult the documentation which come along with the component library for answers on this kind of questions.

  • How to get an event programmatically from a phase listener

    Hi all,
    does anyone know how I can get the component which generated the postback from a phase listener? I need this information because, in my application, I need to log into the database all the buttons and/or options the user clicked.
    Thanks in advance,
    Monique

    Best what you can do is to get all map keys of the ExternalContext#getRequestParameterMap(), those are client ID's of the input elements involved in the form submit, then use UIViewRoot#findComponent() to get the component by client ID and finally determine if it is an instance of UICommand.

  • ADF Faces: Phase listener

    hi folks,
    In phase listener can we get which is a last action fired .I
    have command links in page with action associated with it ,in phase listener i want to know which action is fired that is which commandlink is clicked
    Thanks
    Pravin

    ok! i know for  initial requests  (when a user requesting the page for the first time ) the "JavaServer Faces implementation creates an empty view during restore View phase and the life cycle advances to the render response phase".
    so i think it is impossible to change Uicomponent state in phase listener !!!!   but how can i change Uicomponent attribute before page send to user's browser ?!!

  • Use of JSF Phase Listener?

    There are many many examples of how to 'access' the six phases of the JSF Life Cycle.
    I have a simple page that has two input text fields and one command button.
    I would like to be able to access the contents of the text fields on the page in Phase 2 (APPLY REQUEST VALUES), or other phases. After quite a bit of time I am posting this in the hopes that someone could point me in the correct direction to do this or perhaps someone has a simple example.
    Thanks - Casey

    Code for phase listener, backing bean and output are at the bottom of this note.
    The text field has a Id property of lname. I assume you are referring about using findComponent() against the backing bean that has a corresponding property (RichInputText) for the text field?
    When I run the app I am getting a null for the objReference for the backing bean (line 16 in the output) - see output which then causes a NullPointerException.
    Suggestions on how to get the reference to the backing bean, or the component that will contain the data for the input text field?
    Thanks again - Casey
    The code I am using in the Phase Listener class is:*
    +public class MyPhaseListener implements PhaseListener {+
    +public MyPhaseListener() {+
    +}+
    +public void beforePhase(PhaseEvent pe) {+
    if (pe.getPhaseId() == PhaseId.RESTORE_VIEW)
    System.out.println("Processing new  Request!");
    System.out.println("before - " pe.getPhaseId().toString());+
    +if (pe.getPhaseId().toString().equals("APPLY_REQUEST_VALUES 2")) {+
    System.out.println("lkjhlkjhlkjhlkjh");
    +}+
    +if (pe.getPhaseId().toString().equals("APPLY_REQUEST_VALUES 2")) {+
    FacesContext facesContext = FacesContext.getCurrentInstance();
    ELContext elContext = facesContext.getELContext();
    ExpressionFactory expressionFactory =
    facesContext.getApplication().getExpressionFactory();
    ValueExpression exp =
    expressionFactory.createValueExpression(elContext,
    +"#{BackingBean}",+
    BackingBean.class);
    BackingBean nameData = (BackingBean)exp.getValue(elContext);
    System.out.println(nameData);
    System.out.println(nameData.getLname().findComponent("lname"));
    +}+
    +}+
    +public void afterPhase(PhaseEvent pe) {+
    System.out.println("after - " pe.getPhaseId().toString());+
    if (pe.getPhaseId() == PhaseId.RENDER_RESPONSE)
    System.out.println("Done with Request!\n");
    +}+
    +public PhaseId getPhaseId() {+
    return PhaseId.ANY_PHASE;
    +}+
    +}+
    The code for the backing bean is:*
    package view;
    import oracle.adf.view.rich.component.rich.input.RichInputText;
    +public class BackingBean {+
    private RichInputText lname;
    +public BackingBean() {+
    +}+
    +public void setLname(RichInputText lname) {+
    System.out.println("In setLName");
    this.lname = lname;
    +}+
    +public RichInputText getLname() {+
    System.out.println("In getLName");
    return lname;
    +}+
    +}+
    Output from System.out.println statements:*
    Processing new  Request!
    before - RESTORE_VIEW 1
    after - RESTORE_VIEW 1
    before - RENDER_RESPONSE 6
    In getLName
    In setLName
    after - RENDER_RESPONSE 6
    Done with Request!
    Processing new  Request!
    before - RESTORE_VIEW 1
    In setLName
    after - RESTORE_VIEW 1
    before - APPLY_REQUEST_VALUES 2
    lkjhlkjhlkjhlkjh
    null
    after - APPLY_REQUEST_VALUES 2
    +<Jul 13, 2009 8:27:14 AM CDT> <Error> <HTTP> <BEA-101017> <[weblogic.servlet.internal.WebAppServletContext@857c75 - appName: 'Application8', name: 'Application8-ViewController-context-root', context-path: '/Application8-ViewController-context-root', spec-version: '2.5', request: weblogic.servlet.internal.ServletRequestImpl@1c70722[+
    +POST /Application8-ViewController-context-root/faces/untitled1.jspx?_adf.ctrl-state=793257214_3 HTTP/1.1+
    +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/x-shockwave-flash, */*+
    +Referer: http://127.0.0.1:7101/Application8-ViewController-context-root/faces/untitled1.jspx?_adf.ctrl-state=793257214_3+
    +Accept-Language: en-us,de;q=0.5+
    +Content-Type: application/x-www-form-urlencoded+
    +UA-CPU: x86+
    +Accept-Encoding: gzip, deflate+
    +User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)+
    +Content-Length: 269+
    +Connection: Keep-Alive+
    +Cache-Control: no-cache+
    +Cookie: JSESSIONID=wBr1Kb2GrCDpnhkNNgQyTvJvSjlnWHyvnq9gNWT92kvsFYlGC1Jl!1059440035+
    +]] Root cause of ServletException.+
    java.lang.NullPointerException
    +     at view.MyPhaseListener.beforePhase(MyPhaseListener.java:42)+
    +     at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:228)+
    +     at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:175)+
    +     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)+
    +     at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)+
    +     Truncated. see log file for complete stacktrace+

  • ADF:How to use NavigationHandler in Phase-Listener with adfc-config.xml

    Hi,
    in our application a user should be navigated to the login-page, when he tries to navigate directly to a page where he has no right for or if the session is expired.
    Our navigation is complete in the adfc-config.xml. So I created a phase-listener, which is called by the adf-settings.xml.
    Inside the phase-listener I'm checking the rights. If the user doesn't have the needed rights, he should be linked to the login page. But how can I do that?
    Some days ago our navigation has been complete in the faces-config.xml. But now we moved the navigation to the adfc-config.xml, because we are sure that it's better. E.g. for using the dialog framework.
    In the face-config.xml we had also the call of the phase-listener. There we did the forwarding like this and it worked:
    FacesContext facesContext = FacesContext.getCurrentInstance();
    facesContext.getApplication().getNavigationHandler().handleNavigation(facesContext, null, "login_page");But now I think I have to use the ADFContext somehow, or?
    So how can I do that with the adfc-config.xml?
    Thanks a lot for your help,
    Bastian
    I'm using JDeveloper 11g Release 1 (11.1.1.3.0)

    Hello Frank,
    thanks for your answer, but it doesn't really help me, because I'm a newbie, sorry.
    Does your answer mean, that I should leave the call of the phase-listener in the faces-config and then I would also have access to the login-page, which is in the adfc-config?
    Or does it mean, that I call now my phase-listener by adf-settings but don't have to change the phase-listener itself and can still use my code (FacesContext...)? But that's not working. I get no error but he is also not redirecting.
    Maybe my problem starts on an earlier point.
    Is it better to create all pages in the adfc-config or faces-config? (Maybe you have a good reference for reading about such a basic discussion)
    I thought adfc-config would be the better one. But there I'm not able to redirect to another page (login) if somebody calls a special page without rights for example.
    So my second basic question would be about the relation of adfc-config, faces-config and ADFContext and FacesContext.
    Because I think it's not a short answer I hope you could give me also for this a reference so that I can read these basics myself.
    Thanks a lot for helping a newbie becoming better :-)
    Bastian

  • ADF - Component File Download Listener - Setting the output filename

    Studio Edition Version 11.1.1.2.0
    Hi, I would like to learn how to set the output filename as current data + filename. I have a button with the component File Download Listener that has theses parameters
    Content/Type: application/pdf
    Filename: test.pdf
    Method: fullReportPDF()
    I needed that when the user clicks the button, that he return the current date + filename statically defined.
    How i may to make this?

    In a bean you implement a method which return the filen ame date and static part concatenated and set it as EL into the af:fileDownloadActionListener
    // on the page
    <af:fileDownloadActionListener contentType="application/pdf"
                                             filename="#{XYZBean.filename}"
                                             method="#{XYZBean.fullReportPDF}"/>
    // in the bean
        public String getFilename()
            String fn = (new Date()).toString() + "static_part.xyz";
            return fn;
        public void fullReportPDF(FacesContext facesContext, OutputStream outputStream) { ... }where XYZBean is the bean where you have implmented the method fullReportPDF.
    Timo

  • Popup + before phase listener + commandlink issue

    All,
    I have a before phase listener configured on a page to open a popup and it works pretty well i.e. the popup gets opened when the page is loaded. Now i want to show the same popup when the user clicks on the commandLink. So i configured the commandLink to have a showPopupbehaviour as its child. The issue is when i click on the command link the popup is not getting opened. However if i remove the call to the before phase listener (), the popup is getting invoked from the command link.
    Please advice whats wrong in this case ? Ideally both should be working independently.
    I tried setting the immediate and auto submit also but no effect.
    thnks
    Jdev 11.1.1.5

    Hi,
    using af:showPopupBehavior issues a request to the server, which then also is handled by your phase listener. So you need to add some logic to your phase listener to not process its action when the command button is pressed. You can e.g. set the command button to partialSubmit = true and then check if the request is a partial request AdfContext.getCurrentInstance().isPartialRequest(facesContext) This way the phase listener opens the popup when a page loades but no longer after.
    Frank

  • How do I set a Phase Listener to only run for a specific page?

    How do I set a Phase Listener to only run for a specific page?
    I understand that a Phase Listener runs for ever page in the application, however I want a phase listener to only run for one page at the beginning of the application.
    I discovered I can't use a Filter, because the JSF Application instance always returns null.
    Thus, I thought a Phase Listener would be a good approach.
    Thoughts?
    Thanks,
    --Todd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

    I have moved forward with checking the requested URI...
    (shivers)
    Thanks,
    --Todd                                                                                                                                                                                   

  • Determing which component from a custom TreeCellRenderer was clicked on

    hi,
    i've been experimenting with finding which component has been clicked on in a JTree which has a custom tree cell renderer. I've got a piece of code that appears to work, but am unsure if this is the proper way to go about doing this, and whether it might fail under some circumstances.
    any help appreciated,
    asjf
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.tree.*;
    import javax.swing.event.*;
    public class JTreeTest1 {
       public static void main(String[] arg) throws Exception {
          final JTree tree = new JTree();
          final TreeCellRenderer renderer = new MyRenderer();
          tree.setCellRenderer(renderer);
          tree.addMouseListener(new MouseAdapter() {
             public void mouseClicked(MouseEvent e) {
                int x = e.getX(), y = e.getY();
                int row = tree.getRowForLocation(x,y);
                TreePath path = tree.getPathForLocation(x,y);
                if(path!=null) {
                   Object o = path.getLastPathComponent();
                   Rectangle r = tree.getPathBounds(path);
                   // how to detect what component has been clicked on?
                   // simplification: pretend all boolean state has no effect on renderer (which is true for the renderer below)
                   Component renderedComponent = renderer.getTreeCellRendererComponent(tree, o, false, false, false, row, false);
                   renderedComponent.setBounds(r);
                   int _x = (int) ((double)e.getX() - r.getX());
                   int _y = (int) ((double)e.getY() - r.getY());
                   Component clickedUpon = SwingUtilities.getDeepestComponentAt(renderedComponent, _x, _y);
                   if(clickedUpon instanceof JLabel) {
                      JLabel jl = (JLabel) clickedUpon;
                      System.out.println(jl.getText());
          JFrame frame = new JFrame("JTreeTest1");
          frame.getContentPane().add(tree);
          frame.pack();
          frame.setVisible(true);
    class MyRenderer extends JPanel implements TreeCellRenderer {
       JLabel custom;
       public MyRenderer() {
          super(); // flow layout
          add(new JLabel("Hello"));
          add(custom = new JLabel());
          custom.setOpaque(true);
          custom.setBackground(UIManager.getColor("Tree.background"));
          custom.setForeground(UIManager.getColor("Tree.foreground"));
          add(new JLabel("World"));
       public Component getTreeCellRendererComponent(JTree tree, Object value, boolean isSelected, boolean expanded,
                                                     boolean leaf, int row, boolean hasFocus)
          custom.setText("("+value.toString()+")");
          return this;
    }

    My only advice would be to remember that rendered components are not actually added to the tree, so they are not a child of the tree... they actually cannot be clicked on. The rendered components are quickly used just to paint and specific image and then discarded (which is why you don't typically want to create new ones each time). When you click on the tree, there is no "rendered component" there, just an image that was painted.
    Hope this helps
    Josh Castagno
    http://www.jdc-software.com

  • Which component do I need ?

    Which component do I need ? I want to connect my iPhone/iPad/iMac over wifi to a Bose dock system. Do I need a airport extreme or apple tv

    Airport Express or Extreme if you plug it into the speaker port on the Airport.

  • Which component do I need to paste images, pictures from the clipboard.

    Hey all,
    I've made a java-application and with a click on a button, I jump to a drawprogramme.
    When I've finished my picture, copied i to the clipboard(ctrl c), I want to show it in my application.
    How can I do this and in which component must I paste it?
    Thanks.

    This is the code I use:
    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    Transferable transferable = clipboard.getContents(this);
    if (transferable.isDataFlavorSupported(DataFlavor.imageFlavor)) {
    try {
    //pp is my panel to paste in
    pp.image = (Image)transferable.getTransferDataDataFlavor.imageFlavor);
    pp.repaint();
    catch (Exception ex) {
    System.out.println(ex);
    Sometimes it works, but mostly I receive a black box.

Maybe you are looking for