Feedback requested: in backing bean, use AM svc method or operation binding

Hello all,
I'm posting this here to solicit feedback from both Oracle and from the community at large. The basic question is around what is the best/better practice for calling Application Module service methods from a backing bean. One choice is to call the service method directly on the application module; the other is to put an operation binding in the page definition and to execute that binding. The basic code for the two methods:
((MyAppModule) getBindings().getDataControl.getApplicationModule()).serviceMethod();or
getBindings().getOperationBinding("serviceMethod").execute();My question comes up specifically because of differences in how the default error handling works. For testing, we created a simple AM with a single service method that throws a JboException (a kind of RuntimeException). Then, we created a simple ADF Faces page with an af:messages (to see how error handling works) and four af:commandButtons. The four command buttons are as follows (the code is in the backing bean for each of them):
1). partialSubmit=false, calls application module service method directly
2). partialSubmit=false, executes service method via operationBinding
3). partialSubmit=true, calls application module service method directly
4). partialSubmit=true, executes service method via operationBinding
None of the backing bean methods catch any exceptions. Note that #2 and #4 could be bound directly to the methodBinding in the pagedef, but we did it via code in the backing bean to more accurately mimic some of the code in our application; in any case, the results were the same using either method for #2 and #4.
The results when clicking each button:
1). ugly stack trace in the browser window (yuck!)
2). the af:messages component displays the JboException (nice)
3). No stack trace, no error message (even worse than #1, user thinks "success," even though exception occurred)
4). the af:messages component displays the JboException (nice)
This leads me to think that perhaps calling via the binding container is the preferred method because the default error handling gives acceptable behaviour, whereas using the AM directly gives unacceptable behaviour.
Another "benefit" of calling through the binding container is that the technology in the model layer could be changed without having to change the view layer. I say "benefit" in quotes because I personally believe that one should write applications to take full advantage of the technology they choose, not try to strive for technology/database independence (no flames on this one please - that's not the main point here ;).
Having made the preliminary conclusion that the binding container is the preferred way to go for service methods - that could then ostensibly be extended to view objects as well. Should the view layer use iteratorBindings instead of dealing with view objects directly as well? This is a bit more shaky ground because there are some points in the view/controller layer (namely managed beans not associated with any page) where there is no binding container available. However, in backing beans, for re-executing queries we could make the "best practices" statement to always use iteratorBindings instead of accessing the AM/VO. I just completed a test comparing view object usage vs iterator binding usage (vo.executeQuery() vs myIter.executeQuery()) with similar results to the AM testing - the binding container route gives acceptable error handling, whereas the VO route forces me to implement my own error/exception trapping and message display.
I am aware of one drawback to using the binding container instead of the AM directly - that is that each page that needs the service method must have something in it's pageDef for that method. Originally, we had some code in a superclass of some backing beans that called the AM directly, and we didn't need to touch the pageDefs of approximately 20 JSF pages - when changing to use the operation binding - we had to add it to a lot of page defs.
I'm very interested in feedback from the community at large on my conclusions. If the discussion gets to be too big/complicated for here, we can change venues to perhaps the oracle wiki or another forum. I did do a quick review of SRDemo ADFBC and noted that all of the service method calls are done through operation bindings - I never noticed that before! Most of the discussion we see in the forums shows people calling them directly, which is why I thought it important to post here.
Best regards,
John

What we did in our project was that we create a "Headless" pagedefinition, (that was how it was described in SRDemo documentation or in JDeveloper help, its on the latter part about Security).
You have to create that pagedef manually. and it only has an
<page id="yourPageDef_Id" path="..."> entry in your Databindings and no
<page path=".../yourPageDef_id" usageId=".../???.jsp">And then in your faces_config and your managed bean name is backingSystemStateBean and is located at path.to.bean.SystemState add a Session scope bean entry like this:
  <managed-bean>
    <managed-bean-name>backingSystemStateBean</managed-bean-name>
    <managed-bean-class>path.to.bean.SystemState</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    <managed-property>
      <property-name>bindings</property-name>
      <value>#{data.yourPageDef_Id}</value>
    </managed-property>

Similar Messages

  • Browser Dependency when calling a method in backing bean using a javasript.

    Hi all,
    I have a problem which may look simple but bugging me for quite some time.
    The problem is : When I call a method in the backing bean using a Javascript, (the method can alternatively be invoked by clicking on a command link) I am facing an exception (stack printed below).
    The strange part is that...I am getting this exception only when I use Internet Explorer. It works absolutely fine when I use Mozilla or Netscape browsers. Also, even in ie, it is working fine when I click on the link directly. The probem comes only when I invoke the action using a javascript.
    WARN [lifecycle] executePhase(RENDER_RESPONSE 6,com.sun.faces.cont
    ext.FacesContextImpl@16ce9df) threw exception
    javax.faces.FacesException
         at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java
    :135)
         at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
         at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
    FilterChain.java:290)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
    ain.java:206)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
    FilterChain.java:235)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
    ain.java:206)
         at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.ja
    va:96)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
    FilterChain.java:235)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
    ain.java:206)
         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
    va:230)
         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
    va:175)
         at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssoci
    ationValve.java:179)
         at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:
    84)
         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128
         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104
         at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnecti
    onValve.java:156)
         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
    :109)
         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http
    11Protocol.java:580)
         at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
         at java.lang.Thread.run(Unknown Source)
    Caused by: ClientAbortException: java.net.SocketException: Connection reset by
    peer: socket write error
         at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:
    358)
         at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:434)
         at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:309)
         at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:288)
         at org.apache.catalina.connector.Response.flushBuffer(Response.java:542)
         at org.apache.catalina.connector.ResponseFacade.flushBuffer(ResponseFacade.java
    :279)
         at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:20
    2)
         at org.ajax4jsf.framework.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java
    :101)
         at org.ajax4jsf.framework.ajax.AjaxViewHandler.renderView(AjaxViewHandler.java:
    222)
         at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java
    :106)
         ... 24 more
    Caused by: java.net.SocketException: Connection reset by peer: socket write erro
    r
         at java.net.SocketOutputStream.socketWrite0(Native Method)
         at java.net.SocketOutputStream.socketWrite(Unknown Source)
         at java.net.SocketOutputStream.write(Unknown Source)
         at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWri
    te(InternalOutputBuffer.java:764)
         at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFi
    lter.java:124)
         at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.j
    ava:570)
         at org.apache.coyote.Response.doWrite(Response.java:560)
         at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:
    353)
         ... 33 more
    13:54:42,805 ERROR [STDERR] ClientAbortException: java.net.SocketException: Con
    nection reset by peer: socket write error
    13:54:42,805 ERROR [STDERR]      at org.apache.catalina.connector.OutputBuffer.realW
    riteBytes(OutputBuffer.java:358)
    13:54:42,805 ERROR [STDERR]      at org.apache.tomcat.util.buf.ByteChunk.flushBuffer
    (ByteChunk.java:434)
    13:54:42,805 ERROR [STDERR]      at org.apache.catalina.connector.OutputBuffer.doFlu
    sh(OutputBuffer.java:309)
    13:54:42,805 ERROR [STDERR]      at org.apache.catalina.connector.OutputBuffer.flush
    (OutputBuffer.java:288)
    13:54:42,820 ERROR [STDERR]      at org.apache.catalina.connector.Response.flushBuff
    er(Response.java:542)
    13:54:42,820 ERROR [STDERR]      at org.apache.catalina.connector.ResponseFacade.flu
    shBuffer(ResponseFacade.java:279)
    13:54:42,820 ERROR [STDERR]      at com.sun.faces.application.ViewHandlerImpl.render
    View(ViewHandlerImpl.java:202)
    13:54:42,820 ERROR [STDERR]      at org.ajax4jsf.framework.ViewHandlerWrapper.render
    View(ViewHandlerWrapper.java:101)
    13:54:42,820 ERROR [STDERR]      at org.ajax4jsf.framework.ajax.AjaxViewHandler.rend
    erView(AjaxViewHandler.java:222)
    13:54:42,820 ERROR [STDERR]      at com.sun.faces.lifecycle.RenderResponsePhase.exec
    ute(RenderResponsePhase.java:106)
    13:54:42,820 ERROR [STDERR]      at com.sun.faces.lifecycle.LifecycleImpl.phase(Life
    cycleImpl.java:251)
    13:54:42,820 ERROR [STDERR]      at com.sun.faces.lifecycle.LifecycleImpl.render(Lif
    ecycleImpl.java:144)
    13:54:42,820 ERROR [STDERR]      at javax.faces.webapp.FacesServlet.service(FacesSer
    vlet.java:245)
    13:54:42,820 ERROR [STDERR]      at org.apache.catalina.core.ApplicationFilterChain.
    internalDoFilter(ApplicationFilterChain.java:290)
    13:54:42,820 ERROR [STDERR]      at org.apache.catalina.core.ApplicationFilterChain.
    doFilter(ApplicationFilterChain.java:206)
    13:54:42,820 ERROR [STDERR]      at com.hds.vc.common.infrastructure.AIMFilter.doFil
    ter(AIMFilter.java:27)
    13:54:42,820 ERROR [STDERR]      at org.apache.catalina.core.ApplicationFilterChain.
    internalDoFilter(ApplicationFilterChain.java:235)
    13:54:42,820 ERROR [STDERR]      at org.apache.catalina.core.ApplicationFilterChain.
    doFilter(ApplicationFilterChain.java:206)
    13:54:42,820 ERROR [STDERR]      at org.jboss.web.tomcat.filters.ReplyHeaderFilter.d
    oFilter(ReplyHeaderFilter.java:96)
    13:54:42,820 ERROR [STDERR]      at org.apache.catalina.core.ApplicationFilterChain.
    internalDoFilter(ApplicationFilterChain.java:235)
    13:54:42,820 ERROR [STDERR]      at org.apache.catalina.core.ApplicationFilterChain.
    doFilter(ApplicationFilterChain.java:206)
    13:54:42,820 ERROR [STDERR]      at org.apache.catalina.core.StandardWrapperValve.in
    voke(StandardWrapperValve.java:230)
    13:54:42,820 ERROR [STDERR]      at org.apache.catalina.core.StandardContextValve.in
    voke(StandardContextValve.java:175)
    13:54:42,820 ERROR [STDERR]      at org.jboss.web.tomcat.security.SecurityAssociatio
    nValve.invoke(SecurityAssociationValve.java:179)
    13:54:42,820 ERROR [STDERR]      at org.jboss.web.tomcat.security.JaccContextValve.i
    nvoke(JaccContextValve.java:84)
    13:54:42,820 ERROR [STDERR]      at org.apache.catalina.core.StandardHostValve.invok
    e(StandardHostValve.java:128)
    13:54:42,820 ERROR [STDERR]      at org.apache.catalina.valves.ErrorReportValve.invo
    ke(ErrorReportValve.java:104)
    13:54:42,820 ERROR [STDERR]      at org.jboss.web.tomcat.service.jca.CachedConnectio
    nValve.invoke(CachedConnectionValve.java:156)
    13:54:42,820 ERROR [STDERR]      at org.apache.catalina.core.StandardEngineValve.inv
    oke(StandardEngineValve.java:109)
    13:54:42,820 ERROR [STDERR]      at org.apache.catalina.connector.CoyoteAdapter.serv
    ice(CoyoteAdapter.java:241)
    13:54:42,820 ERROR [STDERR]      at org.apache.coyote.http11.Http11Processor.process
    (Http11Processor.java:844)
    13:54:42,820 ERROR [STDERR]      at org.apache.coyote.http11.Http11Protocol$Http11Co
    nnectionHandler.process(Http11Protocol.java:580)
    13:54:42,820 ERROR [STDERR]      at org.apache.tomcat.util.net.JIoEndpoint$Worker.ru
    n(JIoEndpoint.java:447)
    13:54:42,820 ERROR [STDERR]      at java.lang.Thread.run(Unknown Source)
    13:54:42,820 ERROR [STDERR] Caused by: java.net.SocketException: Connection rese
    t by peer: socket write error
    13:54:42,820 ERROR [STDERR]      at java.net.SocketOutputStream.socketWrite0(Native
    Method)
    13:54:42,820 ERROR [STDERR]      at java.net.SocketOutputStream.socketWrite(Unknown
    Source)
    13:54:42,820 ERROR [STDERR]      at java.net.SocketOutputStream.write(Unknown Source
    13:54:42,820 ERROR [STDERR]      at org.apache.coyote.http11.InternalOutputBuffer$Ou
    tputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:764)
    13:54:42,820 ERROR [STDERR]      at org.apache.coyote.http11.filters.ChunkedOutputFi
    lter.doWrite(ChunkedOutputFilter.java:124)
    13:54:42,820 ERROR [STDERR]      at org.apache.coyote.http11.InternalOutputBuffer.do
    Write(InternalOutputBuffer.java:570)
    13:54:42,820 ERROR [STDERR]      at org.apache.coyote.Response.doWrite(Response.java
    :560)
    13:54:42,820 ERROR [STDERR]      at org.apache.catalina.connector.OutputBuffer.realW
    riteBytes(OutputBuffer.java:353)
    13:54:42,820 ERROR [STDERR]      ... 33 more
    Please throw some light on this issue.

    This is the Java script I am using
    function submitForm(e){
         var characterCode
         if(e && e.which){
         e = e
         characterCode = e.which
         }else{
         e = event                    characterCode = e.keyCode
         if (characterCode== 13){
         document.getElementById('mainform:submitForm:search').onclick();
    Regards,
    Jagadeesh
    Edited by: Jagadeesh.Pala on Oct 1, 2007 3:59 AM

  • Example of sending the po request to my partner using https post method

    I need to send the po request to my partner using https post method.
    Is there any example for my scenario in oracle b2b?
    Usecase:
    mycompany
    othercompany
    mycompany -> Posts xml document with no namespace -> othercompany
    Protocol: https

    I need to send the po request to my partner using https post method.It is possible. FYI, by default HTTPS uses post method.
    Is there any example for my scenario in oracle b2b?Not exact sample is available but yes, similar samples are available here -
    http://www.oracle.com/technology/sample_code/products/b2b/index.html
    I would suggest you to go through below tutorial to have better understanding -
    http://www.oracle.com/technology/products/soa/b2b/collateral/B2B_TU003_ebxml.pdf
    Namespace is not an issue. It's upto you whether you like to keep it or not. From XML technology point of view, it is always recommended to have a namespace to bind each and every node with it, but I have seem cases where people don't use them.
    Regards,
    Anuj

  • Reconstruction of request scoped backing beans

    Hi,
    I have a jsp which contains the following code:
    <h:commandButton action="go_someplace" actionListener="#{bean1.update}" value="submit"/>bean1 is this form's backing bean and it is request scoped.
    bean1 is passed some parameters from the former page by putting them in the request to that page.
    What I notice is that bean1 is constructed once when the form is displayed, but also a second time before the actionListener (update) is invoked.
    As a result, the second request to the bean (the HTTP request) does not contain what it originally did in the first request anymore and the data gets reset.
    Can anyone please explain this behavior (and offer a solution...).
    Thanks,
    Zohar

    I tried it and it doesn't solve my problem.
    I'll try to explain what I have a bit clearer:
    I have a form with a person's details: name, age. A person has a unique id.
    I have a form with a list of persons. When I select a specific person a new form is shown with that person's details. multiple forms may be opened, so the person's details form is request scoped.
    I pass the selected person's id from the list of persons' form using f:param in the form's commandLink. I retrieve this id in the person's details form using httpRequest.getParameter("com.zohar.selectedPersonId");.
    I also added a <h:inputHidden value="#{personDetails.personId}"/>I noticed that setPersonId() is invoked after all the form controls are built, so that the getPersonName() (which depends on the person ID) is invoked before setPersonId() is invoked.
    Is there a standard way to do this?

  • Have a backing bean in request scope; need to access parameters sent to it

    I have a request scope backing bean in my app, 'projectBean'. This has a property called 'id'.
    /** in request scope in faces-config.xml */
    projectBean {
        id               // set by the param from the previous page
        downloadAction() // activated by commandlink, depends on id
    }There is another backing bean in session scope called 'projectListingBean', which has a dataTable that lists a bunch of projectBeans. In this 'projectListingBean', I can click on any row. That row, when clicked initializes a 'id' parameter, which is then passed to the new 'projectBean'. 'projectBean' then initializes itself based on the id.
    In the jsp page backed by 'projectBean', I also have a link to download something specific to that 'projectBean'. Naturally enough, I have a commandlink with actionBinding to a method in my 'projectBean', downloadXXXAction().
    The problem arises because the downloadXXX() method relies on a 'id'. Remember, this id was orinigally set 2 requests back from the datatable. Since the page backed by 'projectBean' is in request scope, the id is lost, and my method call doesn't work. I tried changing the scope of 'projectBean' to session, but JSF complains that I already setting the 'id' property as a param, I can't set the whole managed bean to something 'higher' like session.
    Of course, the ideal fix to this probelm would be the ability to have beans in page scope, but what other ways (hacks??) are there to get around this?

    Hi, I'm posting some code snippets if it helps with understanding the problem.
    faces-config.xml:
    <!-- PROJECTLISTINGBEAN -->
    <managed-bean>
         <managed-bean-name>projectListingBean</managed-bean-name>
         <managed-bean-scope>session</managed-bean-scope>
         <managed-property>
              <property-name>projectBeans</property-name>
              <property-class>java.util.List</property-class>
              <list-entries>
                   <value-class>
                        com.sun.sleuth.omcmweb.view.bean.ProjectBean
                   </value-class>
              </list-entries>
         </managed-property>
    </managed-bean>
    <!-- PROJECTBEAN -->
    <managed-bean>
         <managed-bean-name>projectBean</managed-bean-name>
         <managed-bean-class>
         </managed-bean-class>
         <managed-bean-scope>request</managed-bean-scope>
         <managed-property>
              <property-name>projectId</property-name>
              <property-class>java.lang.String</property-class>
              <value>#{param.projectId}</value>
         </managed-property>
    </managed-bean>projectlsting.jsp (page backed by projectListingBean)
    <h:dataTable value="#{projectListingBean.projectBeans}"
         var="projectBean" ...>
         <h:column>
              <f:facet name="header">
              </f:facet>
              <h:commandLink action="#{projectListingBean.viewProjectSUmmary}">
                   <h:outputText value="#{projectBean.projectId}" />
                   <f:param name="projectId" value="#{projectBean.projectId}" />
              </h:commandLink>
         </h:column>
    </h:dataTable>projectsummary.jsp (page backed by request scoped projectBean)
    <h:commandLink action="#{projectBean.assessmentAction}" value="..." />
    ...Flow:
    projectlisting.jsp (projectListingBean - session) -param id passed->
    projectsummary.jsp (projectBean - request) -commandLink clicked and id lost-->
    projectSummary.jsp (projectBean - request)

  • How to get the application module instance in backing bean.

    This is Ramesh, I am new to JDeveloper world.
    In my current application I have change password screen which allows user to change there password.
    Here this is a pop-up page. Here I don't have the view object and pagadef for this changepassword.jspx file.
    My aim is to call the Application Module method which takes the user name, old password and new password.
    In backing bean I am trying to call this method by using
    MyProjAM obj = _binding.getDataControl().getApplicationModule();  //throw null pointer exception.
    _binding is the object of DCBindingContainer. 
    ( I have created the parameter called "binding" as my managed bean property and values as #{binding})
    But the above line is throwing the NullPointerException.
    Could you please help me to come out of this problem.
    Thanks and Regards,
    Ramesh Biradar.

    If your page has no page definition, then #{bindings} will be null during the request for that page.
    If you need your page to invoke a data control method when you press a button, the simplest (and declarative) way is publish your AM method on the AM's client interface, then drop the method as a button from the data control palette onto your page. You don't even need a backing bean to accomplish this.
    That said, you can refer to a data control in a backing bean using the expression #{data.[i]YourAppModuleNameDataControl.dataProvider}
    So, assuming you have a helper method like this:
      public static Object EL(String expression) {
        FacesContext ctx = getFacesContext();
        Application app = ctx.getApplication();
        ValueBinding bind = app.createValueBinding(expression);
        return bind.getValue(ctx);
      }and assuming that your application module is named SRService
    and assuming that you have correctly nominated any Application Module custom methods as being available to clients by selecting them on the "Client Interface" panel of the application module editor, then in a backing bean you can acquire an instance.
    Then, the ADF design time will have automatically generated you a custom AM client interface named SRService and you can reference that service interface in your backing bean by using code like this:
            SRService svc = (SRService)EL("#{data.SRService.dataProvider}");
            svc.yourCustomMethod(your,args);

  • Action method of backing bean called multiple times instead of once.

    Hi,
    My backing bean has an action method called "saveEquipmentList" that's called when a "Save" button is clicked. The problem is, this method gets executed twice every time the button is clicked so data gets peristed twice, db triggers get executed twice, etc., it's really pretty annoying. I've put the bean method's code and the JSF command button below, notice that there's a check for FacesContext.getRenderResponse() that I put in for debugging, the code doesn't get executed at all if I leave the FacesContext.getRenderResponse() in, sure, you're saying "So what's you point", no point, just thought I'd explain why the check is in there.
    Thanks,
    Alex
    public synchronized String saveEquipmentList() throws Exception {
    // Order is very important.
    if (FacesContext.getCurrentInstance().getRenderResponse()) {
    System.out.println("GOT RENDER RESPONSE... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
    try {
    loadEquipmentCodesMap(); // Loads map from equip_code_ids in the DB.
    updateEquipCodesMap(); // Updates total for objcode/type to sum of equipment items for that objcode/type.
    saveEquipmentCodes(); // Saves to equipment_codes table.
    loadEquipmentCodesMap();
    updateDataList();
    savedataList();
    updateTotals();
    loadEquipmentList();
    catch (Exception e) {
    setErrMessage("Error saving equipment: " + e.getMessage());
    return "success";
    }else{
    //facesContext.getCurrentInstance().renderResponse();
    return "success";
                                <h:panelGroup id="pg54">
                                  <h:commandButton id="save" disabled="#{(user.role == '2' and backing_equipmentScreen.viewOnly) or
                                                                                          (user.role == '1' and !backing_equipmentScreen.viewOnly)}"
                                                   value="Save"
                                                   action="#{backing_equipmentScreen.saveEquipmentList}"
                                                   styleClass="input"/>
                                </h:panelGroup>

    Here's the phase listener output before clicking the "Save" button (which calls the saveEquipmentList() action method), I pasted it all, from app started to breakpoint, couldn't get it all in due to the 30K char constraint:
    [EJB 3.0]: Assigning default-data-source=jdbc/FedAppDS, specified in projects EJB 3.0 properties
    [Starting OC4J using the following ports: HTTP=8992, RMI=23898, JMS=9233.]
    C:\Dev\JDeveloper10.1.3.3\jdev\system\oracle.j2ee.10.1.3.41.57\embedded-oc4j\config>
    C:\Dev\JDeveloper10.1.3.3\jdk\bin\javaw.exe -server -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=53366 -classpath C:\Dev\JDeveloper10.1.3.3\j2ee\home\oc4j.jar;C:\Dev\JDeveloper10.1.3.3\jdev\lib\jdev-oc4j-embedded.jar -Xms256m -Xmx1024m -Xverify:none -XX:MaxPermSize=256m -DcheckForUpdates=adminClientOnly -Doracle.application.environment=development -Doracle.j2ee.dont.use.memory.archive=true -Doracle.j2ee.http.socket.timeout=500 -Doc4j.jms.usePersistenceLockFiles=false oracle.oc4j.loader.boot.BootStrap -config C:\Dev\JDeveloper10.1.3.3\jdev\system\oracle.j2ee.10.1.3.41.57\embedded-oc4j\config\server.xml
    [waiting for the server to complete its initialization...]
    Listening for transport dt_socket at address: 53366
    Debugger connected to local process.
    Sep 16, 2009 11:00:34 AM com.evermind.server.jms.JMSMessages log
    INFO: JMSServer[]: OC4J JMS server recovering transactions (commit 0) (rollback 0) (prepared 0).
    Sep 16, 2009 11:00:34 AM com.evermind.server.jms.JMSMessages log
    INFO: JMSServer[]: OC4J JMS server recovering local transactions Queue[jms/Oc4jJmsExceptionQueue].
    Sep 16, 2009 11:00:44 AM com.evermind.server.ejb.logging.EJBDeploymentMessages warningGetBeansFromEJBModule
    WARNING: [current-workspace-app:Fed-EOY-EXP_UserInterface_0] EJB module contains no beans.
    Ready message received from Oc4jNotifier.
    Embedded OC4J startup time: 19859 ms.
    Target URL -- http://10.1.38.77:8992/Fed-EOY-EXP/faces/login.jspx
    09/09/16 11:00:48 Oracle Containers for J2EE 10g (10.1.3.3.0) initialized
    Sep 16, 2009 11:01:00 AM com.sun.faces.config.rules.ConverterRule end
    WARNING: [ConverterRule]{faces-config/converter} Merge(javax.faces.Short,null)
    Sep 16, 2009 11:01:00 AM com.sun.faces.config.rules.ConverterRule end
    WARNING: [ConverterRule]{faces-config/converter} Merge(null,java.lang.Short)
    Sep 16, 2009 11:01:00 AM com.sun.faces.config.rules.ConverterRule end
    WARNING: [ConverterRule]{faces-config/converter} Merge(javax.faces.Byte,null)
    Sep 16, 2009 11:01:00 AM com.sun.faces.config.rules.ConverterRule end
    WARNING: [ConverterRule]{faces-config/converter} Merge(null,java.lang.Byte)
    Sep 16, 2009 11:01:00 AM com.sun.faces.config.rules.ConverterRule end
    WARNING: [ConverterRule]{faces-config/converter} Merge(javax.faces.Integer,null)
    Sep 16, 2009 11:01:00 AM com.sun.faces.config.rules.ConverterRule end
    WARNING: [ConverterRule]{faces-config/converter} Merge(null,java.lang.Integer)
    Sep 16, 2009 11:01:00 AM com.sun.faces.config.rules.ConverterRule end
    WARNING: [ConverterRule]{faces-config/converter} Merge(javax.faces.Long,null)
    Sep 16, 2009 11:01:00 AM com.sun.faces.config.rules.ConverterRule end
    WARNING: [ConverterRule]{faces-config/converter} Merge(null,java.lang.Long)
    Sep 16, 2009 11:01:00 AM com.sun.faces.config.rules.ConverterRule end
    WARNING: [ConverterRule]{faces-config/converter} Merge(javax.faces.Float,null)
    Sep 16, 2009 11:01:00 AM com.sun.faces.config.rules.ConverterRule end
    WARNING: [ConverterRule]{faces-config/converter} Merge(null,java.lang.Float)
    Sep 16, 2009 11:01:00 AM com.sun.faces.config.rules.ConverterRule end
    WARNING: [ConverterRule]{faces-config/converter} Merge(javax.faces.Double,null)
    Sep 16, 2009 11:01:00 AM com.sun.faces.config.rules.ConverterRule end
    WARNING: [ConverterRule]{faces-config/converter} Merge(null,java.lang.Double)
    Sep 16, 2009 11:01:00 AM com.sun.faces.config.rules.ValidatorRule end
    WARNING: [ValidatorRule]{faces-config/validator} Merge(javax.faces.LongRange)
    Sep 16, 2009 11:01:00 AM com.sun.faces.config.rules.ConverterRule end
    WARNING: [ConverterRule]{faces-config/converter} Merge(javax.faces.DateTime,null)
    Sep 16, 2009 11:01:00 AM com.sun.faces.config.rules.ConverterRule end
    WARNING: [ConverterRule]{faces-config/converter} Merge(javax.faces.Number,null)
    Sep 16, 2009 11:01:01 AM com.sun.faces.config.rules.NavigationRuleRule end
    WARNING: [NavigationRuleRule]{faces-config/navigation-rule} Merge(*)
    09/09/16 11:01:02 BeforePhase: RESTORE_VIEW 1
    Sep 16, 2009 11:01:02 AM oracle.adfinternal.view.faces.application.ViewHandlerImpl _checkTimestamp
    INFO: ADF Faces is running with time-stamp checking enabled. This should not be used in a production environment. See the oracle.adf.view.faces.CHECK_FILE_MODIFICATION property in WEB-INF/web.xml
    09/09/16 11:01:02 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:02 BeforePhase: RENDER_RESPONSE 6
    09/09/16 11:01:05 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:05 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:05 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:05 BeforePhase: RENDER_RESPONSE 6
    09/09/16 11:01:05 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:05 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:05 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:05 BeforePhase: RENDER_RESPONSE 6
    09/09/16 11:01:05 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:05 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:05 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:05 BeforePhase: RENDER_RESPONSE 6
    09/09/16 11:01:05 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:05 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:05 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:05 BeforePhase: RENDER_RESPONSE 6
    09/09/16 11:01:05 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:06 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:06 BeforePhase: RENDER_RESPONSE 6
    09/09/16 11:01:06 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:06 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:10 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:10 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:10 BeforePhase: APPLY_REQUEST_VALUES 2
    09/09/16 11:01:10 AfterPhase: APPLY_REQUEST_VALUES 2
    09/09/16 11:01:10 BeforePhase: PROCESS_VALIDATIONS 3
    09/09/16 11:01:11 AfterPhase: PROCESS_VALIDATIONS 3
    09/09/16 11:01:11 BeforePhase: UPDATE_MODEL_VALUES 4
    09/09/16 11:01:11 AfterPhase: UPDATE_MODEL_VALUES 4
    09/09/16 11:01:11 BeforePhase: INVOKE_APPLICATION 5
    09/09/16 11:01:11 LoginBean.login(): Here I is...1
    09/09/16 11:01:11 LoginBean.login(): Here I is...2
    09/09/16 11:01:11 LoginBean.login(): Here I is...2.1
    09/09/16 11:01:11 LoginBean.login(): Here I is...2.2
    09/09/16 11:01:11 LoginBean.login(): Here I is...3
    09/09/16 11:01:11 LoginBean.login(): Here I is...4
    09/09/16 11:01:11 LoginBean.login(): The user's full name is Red Sonia.......................................
    09/09/16 11:01:11 LoginBean.login(): The user's role is Admn.......................................
    09/09/16 11:01:11 LoginBean.login(): Here I is...5
    09/09/16 11:01:11 AfterPhase: INVOKE_APPLICATION 5
    09/09/16 11:01:11 BeforePhase: RENDER_RESPONSE 6
    09/09/16 11:01:11 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:11 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:11 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:11 BeforePhase: RENDER_RESPONSE 6
    09/09/16 11:01:11 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:11 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:11 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:11 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:11 BeforePhase: RENDER_RESPONSE 6
    09/09/16 11:01:11 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:11 BeforePhase: RENDER_RESPONSE 6
    09/09/16 11:01:11 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:11 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:11 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:11 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:11 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:11 BeforePhase: RENDER_RESPONSE 6
    09/09/16 11:01:11 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:11 BeforePhase: RENDER_RESPONSE 6
    09/09/16 11:01:11 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:11 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:11 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:11 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:11 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:11 BeforePhase: RENDER_RESPONSE 6
    09/09/16 11:01:11 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:11 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:11 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:11 BeforePhase: RENDER_RESPONSE 6
    09/09/16 11:01:11 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:11 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:11 BeforePhase: RENDER_RESPONSE 6
    09/09/16 11:01:11 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:11 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:11 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:11 BeforePhase: RENDER_RESPONSE 6
    Sep 16, 2009 11:01:11 AM oracle.adfinternal.view.faces.webapp.AdfFacesFilterHelperImpl startFilter
    WARNING: AdfFacesContext had not been properly released on earlier request.
    09/09/16 11:01:11 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:11 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:11 BeforePhase: RENDER_RESPONSE 6
    Sep 16, 2009 11:01:11 AM oracle.adfinternal.view.faces.renderkit.AdfRenderingContext attach
    WARNING: Trying to attach AdfRenderingContext to a thread that already had one.
    09/09/16 11:01:12 The select sql is: SELECT COUNT(FED_STAFF_ID) FROM FED_STAFF WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 4027 AND SALARY > 0
    09/09/16 11:01:12 The select sql is: SELECT COUNT(CONTRACT_ID) FROM CONTRACT WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 4027
    09/09/16 11:01:12 The select sql is: SELECT COUNT(FED_BUDGET_ID) FROM FED_BUDGET WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 4027
    09/09/16 11:01:12 The select sql is: SELECT COUNT(FED_STAFF_ID) FROM FED_STAFF WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 4173 AND SALARY > 0
    09/09/16 11:01:12 The select sql is: SELECT COUNT(CONTRACT_ID) FROM CONTRACT WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 4173
    09/09/16 11:01:12 The select sql is: SELECT COUNT(FED_BUDGET_ID) FROM FED_BUDGET WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 4173
    09/09/16 11:01:12 The select sql is: SELECT COUNT(FED_STAFF_ID) FROM FED_STAFF WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 5027 AND SALARY > 0
    09/09/16 11:01:12 The select sql is: SELECT COUNT(CONTRACT_ID) FROM CONTRACT WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 5027
    09/09/16 11:01:12 The select sql is: SELECT COUNT(FED_BUDGET_ID) FROM FED_BUDGET WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 5027
    09/09/16 11:01:12 The select sql is: SELECT COUNT(FED_STAFF_ID) FROM FED_STAFF WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 5173 AND SALARY > 0
    09/09/16 11:01:12 The select sql is: SELECT COUNT(CONTRACT_ID) FROM CONTRACT WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 5173
    09/09/16 11:01:12 The select sql is: SELECT COUNT(FED_BUDGET_ID) FROM FED_BUDGET WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 5173
    09/09/16 11:01:12 The select sql is: SELECT COUNT(FED_STAFF_ID) FROM FED_STAFF WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 6027 AND SALARY > 0
    09/09/16 11:01:12 The select sql is: SELECT COUNT(CONTRACT_ID) FROM CONTRACT WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 6027
    09/09/16 11:01:12 The select sql is: SELECT COUNT(FED_BUDGET_ID) FROM FED_BUDGET WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 6027
    09/09/16 11:01:12 The select sql is: SELECT COUNT(FED_STAFF_ID) FROM FED_STAFF WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 6173 AND SALARY > 0
    09/09/16 11:01:12 The select sql is: SELECT COUNT(CONTRACT_ID) FROM CONTRACT WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 6173
    09/09/16 11:01:12 The select sql is: SELECT COUNT(FED_BUDGET_ID) FROM FED_BUDGET WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 6173
    09/09/16 11:01:12 The select sql is: SELECT COUNT(FED_BUDGET_ID) FROM FED_BUDGET WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 3120
    09/09/16 11:01:12 The select sql is: SELECT COUNT(FED_BUDGET_ID) FROM FED_BUDGET WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 3130
    09/09/16 11:01:13 The select sql is: SELECT COUNT(FED_BUDGET_ID) FROM FED_BUDGET WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 3131
    09/09/16 11:01:13 The select sql is: SELECT COUNT(FED_BUDGET_ID) FROM FED_BUDGET WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 4041
    09/09/16 11:01:13 The select sql is: SELECT COUNT(FED_BUDGET_ID) FROM FED_BUDGET WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 4048
    09/09/16 11:01:13 The select sql is: SELECT COUNT(FED_BUDGET_ID) FROM FED_BUDGET WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 4367
    09/09/16 11:01:13 The select sql is: SELECT COUNT(FED_BUDGET_ID) FROM FED_BUDGET WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 5126
    09/09/16 11:01:13 The select sql is: SELECT COUNT(FED_BUDGET_ID) FROM FED_BUDGET WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 5323
    09/09/16 11:01:13 The select sql is: SELECT COUNT(FED_BUDGET_ID) FROM FED_BUDGET WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 8600
    09/09/16 11:01:13 The select sql is: SELECT COUNT(FED_BUDGET_ID) FROM FED_BUDGET WHERE ADMIN_UNIT_CODE = '21050' AND GRANT_SOURCE_CODE = 9013
    09/09/16 11:01:13 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:13 AfterPhase: RENDER_RESPONSE 6
    Sep 16, 2009 11:01:13 AM oracle.adfinternal.view.faces.renderkit.core.CoreRenderKit encodeFinally
    WARNING: No AdfRenderingContext available
    09/09/16 11:01:13 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:13 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:13 BeforePhase: RENDER_RESPONSE 6
    09/09/16 11:01:13 BeforePhase: RESTORE_VIEW 1
    Sep 16, 2009 11:01:13 AM oracle.adfinternal.view.faces.webapp.AdfFacesFilterHelperImpl startFilter
    WARNING: AdfFacesContext had not been properly released on earlier request.
    09/09/16 11:01:13 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:13 BeforePhase: RENDER_RESPONSE 6
    Sep 16, 2009 11:01:13 AM oracle.adfinternal.view.faces.renderkit.AdfRenderingContext attach
    WARNING: Trying to attach AdfRenderingContext to a thread that already had one.
    09/09/16 11:01:13 AfterPhase: RENDER_RESPONSE 6
    Sep 16, 2009 11:01:13 AM oracle.adfinternal.view.faces.renderkit.core.CoreRenderKit encodeFinally
    WARNING: No AdfRenderingContext available
    09/09/16 11:01:13 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:13 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:13 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:13 BeforePhase: RENDER_RESPONSE 6
    Sep 16, 2009 11:01:13 AM oracle.adfinternal.view.faces.webapp.AdfFacesFilterHelperImpl startFilter
    WARNING: AdfFacesContext had not been properly released on earlier request.
    09/09/16 11:01:13 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:13 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:13 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:13 BeforePhase: RENDER_RESPONSE 6
    Sep 16, 2009 11:01:13 AM oracle.adfinternal.view.faces.renderkit.AdfRenderingContext attach
    WARNING: Trying to attach AdfRenderingContext to a thread that already had one.
    09/09/16 11:01:13 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:13 BeforePhase: RENDER_RESPONSE 6
    Sep 16, 2009 11:01:13 AM oracle.adfinternal.view.faces.webapp.AdfFacesFilterHelperImpl startFilter
    WARNING: AdfFacesContext had not been properly released on earlier request.
    09/09/16 11:01:13 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:13 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:13 AfterPhase: RENDER_RESPONSE 6
    Sep 16, 2009 11:01:13 AM oracle.adfinternal.view.faces.renderkit.core.CoreRenderKit encodeFinally
    WARNING: No AdfRenderingContext available
    09/09/16 11:01:13 BeforePhase: RESTORE_VIEW 1
    Sep 16, 2009 11:01:13 AM oracle.adfinternal.view.faces.renderkit.AdfRenderingContext attach
    WARNING: Trying to attach AdfRenderingContext to a thread that already had one.
    09/09/16 11:01:13 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:13 BeforePhase: RENDER_RESPONSE 6
    09/09/16 11:01:13 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:13 BeforePhase: RENDER_RESPONSE 6
    Sep 16, 2009 11:01:13 AM oracle.adfinternal.view.faces.webapp.AdfFacesFilterHelperImpl startFilter
    WARNING: AdfFacesContext had not been properly released on earlier request.
    09/09/16 11:01:13 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:13 AfterPhase: RENDER_RESPONSE 6
    Sep 16, 2009 11:01:13 AM oracle.adfinternal.view.faces.renderkit.core.CoreRenderKit encodeFinally
    WARNING: No AdfRenderingContext available
    09/09/16 11:01:13 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:13 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:13 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:13 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:13 BeforePhase: RENDER_RESPONSE 6
    Sep 16, 2009 11:01:13 AM oracle.adfinternal.view.faces.renderkit.AdfRenderingContext attach
    WARNING: Trying to attach AdfRenderingContext to a thread that already had one.
    09/09/16 11:01:13 BeforePhase: RENDER_RESPONSE 6
    Sep 16, 2009 11:01:13 AM oracle.adfinternal.view.faces.webapp.AdfFacesFilterHelperImpl startFilter
    WARNING: AdfFacesContext had not been properly released on earlier request.
    Sep 16, 2009 11:01:13 AM oracle.adfinternal.view.faces.renderkit.core.CoreRenderKit encodeFinally
    WARNING: No AdfRenderingContext available
    09/09/16 11:01:13 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:13 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:13 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:13 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:13 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:13 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:13 BeforePhase: RENDER_RESPONSE 6
    09/09/16 11:01:13 BeforePhase: RENDER_RESPONSE 6
    Sep 16, 2009 11:01:13 AM oracle.adfinternal.view.faces.renderkit.AdfRenderingContext attach
    WARNING: Trying to attach AdfRenderingContext to a thread that already had one.
    09/09/16 11:01:13 AfterPhase: RENDER_RESPONSE 6
    Sep 16, 2009 11:01:13 AM oracle.adfinternal.view.faces.webapp.AdfFacesFilterHelperImpl startFilter
    WARNING: AdfFacesContext had not been properly released on earlier request.
    09/09/16 11:01:13 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:13 AfterPhase: RENDER_RESPONSE 6
    Sep 16, 2009 11:01:13 AM oracle.adfinternal.view.faces.renderkit.core.CoreRenderKit encodeFinally
    WARNING: No AdfRenderingContext available
    09/09/16 11:01:13 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:13 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:13 AfterPhase: RESTORE_VIEW 1
    Sep 16, 2009 11:01:13 AM oracle.adfinternal.view.faces.renderkit.AdfRenderingContext attach
    WARNING: Trying to attach AdfRenderingContext to a thread that already had one.
    09/09/16 11:01:13 BeforePhase: RENDER_RESPONSE 6
    09/09/16 11:01:13 BeforePhase: RENDER_RESPONSE 6
    09/09/16 11:01:13 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:13 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:13 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:13 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:13 BeforePhase: RENDER_RESPONSE 6
    09/09/16 11:01:13 AfterPhase: RENDER_RESPONSE 6
    Sep 16, 2009 11:01:13 AM oracle.adfinternal.view.faces.webapp.AdfFacesFilterHelperImpl startFilter
    WARNING: AdfFacesContext had not been properly released on earlier request.
    Sep 16, 2009 11:01:13 AM oracle.adfinternal.view.faces.renderkit.core.CoreRenderKit encodeFinally
    WARNING: No AdfRenderingContext available
    Sep 16, 2009 11:01:13 AM oracle.adfinternal.view.faces.renderkit.AdfRenderingContext attach
    WARNING: Trying to attach AdfRenderingContext to a thread that already had one.
    Sep 16, 2009 11:01:13 AM oracle.adfinternal.view.faces.renderkit.core.CoreRenderKit encodeFinally
    WARNING: No AdfRenderingContext available
    09/09/16 11:01:13 AfterPhase: RENDER_RESPONSE 6
    09/09/16 11:01:16 BeforePhase: RESTORE_VIEW 1
    09/09/16 11:01:16 AfterPhase: RESTORE_VIEW 1
    09/09/16 11:01:16 BeforePhase: APPLY_REQUEST_VALUES 2
    .

  • Calling Backing Bean Method with h:outputLink

    Is there a way to call a backing bean using h:outputLink isntead of h:commandLink ?

    No, you can't. You however can just let it point to a JSF page and make use of the constructor of the involved request scoped managed bean.

  • Role of backing beans in MVC design

    Hello,
    yet another JSF/MVC question. In short, I would like to know what the role of the backing beans are in an MVC design with JSF. The most simple answer would be that they are just the Controllers. But that doesn't seem enough.
    Suppose I have an application model, call it Ma, which is just an interface that represents a use case in Java. Ma doesn't know anything about a view or controller, it is just domain logic with application-specific state and behavior added. Now,
    - my backing bean uses Ma as its Model, acting as a true Controller by delegating requests to it
    - my backing bean also adds view-specific state (show/hide stuff and it also returns a List<SelectItem> for example) that I can't put on Ma, so it also acts as a view model Mv
    So, I could argue that I have an Mv-V-C design, where the backing bean is both C and Mv. My user interface V only queries Mv for its state.
    Usually I read that V and C are considered to be very tightly coupled, so then I would have an Ma-V-C design with the backing bean being C and part of V.
    Is it just a question of terminology or point of view, expressing the same idea twice?

    The way I think about it is that there are multiple layers of MVC.This kind of refers to my point-of-view question. So let's try two of them.
    The view itself can be thought of as containing MVC elements.When only looking at JSF (presentation layer) we have:
    - Model: backing beans (view model Mv)
    - View: view root and JSPs (query backing beans for state)
    - Controller: Faces servlet (dispatches requests to backing beans)
    In my "enterprise" quality applications, I will have three distinct layers.Taking a step back, let's look at the application layer (your "control layer", application logic behind interface) and the presentation layer.
    Then:
    - Model: application model Ma in application layer
    - View: backing bean (associated with UI components)
    - Controller: backing bean (dispatches requests to Ma)
    Agree?
    It's interesting that you call my application layer "control layer" since it seems more like a model to me, especiallly when you say:
    The control layer consists of business logic interfaces and their implementations.This said, the objects in this application layer do have some controller functionality as they orchestrate the interactions with the underlying domain model, just llike the backing beans do with the application model. So maybe you can take another step back and consider these application logic interfaces as the View and Controller for the underlying domain model. That is: in a layered MVC design every M can become the VC for an underlying (more general) layer?
    And I have seen this taken to extremes.Perhaps that's what I'm doing here :)

  • Backing Beans as session beans

    All the beans on our web application are session scoped beans. Will there ever be any problems due to this? I do not have time to rewrite the beans in request scope.
    Thanks.

    I am sorry for not being clear. We use backing beans only to retreive and provide form data. I have noticed that all the developers on the team have used session as the scope for these beans. The reason seems to be usage of features such as partial page submits which work better if the bean is in session scope.
    However I agree with you that this may cause uneccesary memory footprints. I am currently working on creating a request scoped backing bean that will get data for an Edit page. On submit, the Edit page needs to be re rendered. I need to figure out how to achieve this when the bean is in request scope.

  • Calling a backing bean method by clicking on an image.

    I have several HtmlGraphicImage (h:graphicImage) objects on a page. I would like to be able to call a method inside the backing bean for the JSP page where the images are located when the user clicks on one of the images, and have a parameter sent to that method in the backing bean that will tell it which image was clicked on.
    How can this be done? Unlike buttons that have an action that gets listend to in the backing bean, HtmlGraphicImage objects do not have actions. I know that you can intercept clicks by an onClick Javascript method, but how can you call a mehtod in the backing bean using the Javascript onClick?
    For example, part of my JSP looks like this:
               <body style="background-color: rgb(255, 255, 255); -rave-layout: grid">
                    <h:form binding="#{InitialReport.form1}" id="form1">
                        <h:graphicImage binding="#{InitialReport.frontalImage}" height="204" id="frontalImage" style="left: 144px; top: 240px; position: absolute" width="242"/>
                        <h:graphicImage binding="#{InitialReport.profileImage}" height="198" id="profileImage" style="left: 432px; top: 240px; position: absolute" width="244"/>
                        <h:graphicImage binding="#{InitialReport.smileImage}" height="198" id="smileImage" style="left: 720px; top: 240px; position: absolute" width="244"/>If my backing bean (InitialReport.java) had a method that looked like this:
      public void setCurrentImage(String imageName)what would the javascript look like in order to send a name to setCurrentImage?
    Thanks!

    you can use the <h:button> with type='image'Thanks for the reply, but I cannot use that. The thing is, the images are read at run time from a database and are not present in the resources. The button's image only takes String file names, not URLs.
    There should be a way to do this using onClick.

  • How to refresh data in SelectOneChoice component based on backing bean

    Hello.
    I am using JD Studio Edition Version 11.1.1.5.0 on Weblogic 11.1.1.5
    I have page fragment with SelectOneCoice based on backing bean (used as filter)
    <af:selectOneChoice label="#{projectBundle['label.toolbar.spinbox.period']}"
                                        valueChangeListener="#{backingBeanScope.backing_jsf_fragments_project_ContentMainView.onPeriodValueChangeListener}"
                                        binding="#{backingBeanScope.backing_jsf_fragments_project_ContentMainView.soc2}"
                                        id="soc2" value="#{pageFlowScope.ContentMainView.period}" autoSubmit="true">
                      <f:selectItems value="#{pageFlowScope.YearsListBean.yearItems}"
                                     binding="#{backingBeanScope.backing_jsf_fragments_project_ContentMainView.si2}" id="si2"/>
    </af:selectOneChoice>
    there is backing bean which reads data from database and creates list + add null value
    package sk.web.view.bean;
    import java.util.ArrayList;
    import java.util.List;
    import javax.faces.model.SelectItem;
    import oracle.adf.model.binding.DCIteratorBinding;
    import oracle.adf.share.logging.ADFLogger;
    import oracle.jbo.Row;
    import sk.web.view.common.utils.ADFUtils;
    * Class is supposed to provide list of years for the af:SelectOneChoice component.
    public class YearsListBean {
        private static final String PERIOD_ITERATOR_NAME = "PeriodView1Iterator"; //auto generated id
        private List<SelectItem> yearItems;
        public YearsListBean() {
            super();
            yearItems = new ArrayList<SelectItem>();
            addYearsToList();
        public void addYearsToList() {
            DCIteratorBinding iter = null;
            iter = ADFUtils.findIterator(PERIOD_ITERATOR_NAME);
            Row[] rows = iter.getAllRowsInRange();
            addYearItemToList("", "");       
            for(int i = 0; i < rows.length; i++){
                Row row = rows[i];
                log.info("row[" + Integer.toString(i) +"]: " + rows[i].getAttribute("Year").toString());
                addYearItemToList( rows[i].getAttribute("Year").toString(), rows[i].getAttribute("Year").toString());
        public void clearYears() {
            log.info("Called.");
            getYearItems().clear();
       private void addYearItemToList(String strInYearLabel, String strInYearValue) {
            SelectItem tObjItem = new SelectItem();
            // Setup object
            tObjItem.setLabel(strInYearLabel);
            tObjItem.setValue(strInYearValue);
            // Add it ro list
            yearItems.add(tObjItem);   
        public List<SelectItem> getYearItems() {       
            // Get Output
            return yearItems;
    When I insert new record into DB table I want to show new value into filter. How to achieve this?
    I tryied get current instance of YearsListBean
         YearsListBean yearsList = (YearsListBean)FacesUtils.getManagedBean("pageFlowScope.YearsListBean");
    then clear and fill it again
         yearsList.clearYears();
         yearsList.addYearsToList();
    at the end I refresh view adding partial target
    AdfFacesContext.getCurrentInstance().addPartialTarget(getSoc1());
    But this procedure doesn't work. Please help me find working method.
    Thanks in advance.

    Why don't you use a model driven list in the first place? Your list gets it's data from a vo do this would be the preferred solution.
    Check out my sample http://wp.me/pcBZk-vM
    Which shows an similar use case.
    Timo

  • Cant multiple JSF Forms post to same Backing Bean?

    Wondering why cant i have two jsf forms (for example : Create & Update jsf form) post to same backing bean using value binding technique

    I have one more question
    Cant i have single JSF form post to multiple backing beans even this doesnt work for me
    Please not backing bean is in session scope in both the cases

  • Set label of adf command button from backing bean

    How can we set the label of a command button from a backing bean using EL?
    Is it : <af: commandButton text="#{bindings.email.label}" action.....

    hi,
    create one string and generate accessor for it.
    then in jspx, like this
    text="#{PrintData.label}"
    you can have the label in this way from backing bean.
    private String label;
    public void setLabel(String label)
    this.label = label;
    public String getLabel()
    label = "test";
    return label;
    or else, through binding property of the command button, you can set it in the backing bean.
    hope this is useful for you.

  • How to directly call business object class from backing bean class

    I woul like to call business object class directly from the backing bean class and implement methods in BO. If possible can anyone give an example code.
    Thanks in advance

    Which problems are you occurring then? I really don't see problems. You're just free to access and invoke them.

Maybe you are looking for