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 :)

Similar Messages

  • Backing Beans Object Oriented Design

    Hello,
    Are there any best practices for using Backing Beans?
    How to make managed beans thread-safe for concurrent requests,
    without compromising on efficiency/speed?
    2. How to enforce the J2EE security with backing-beans?
    3. How to decide the scope of these beans to ensure minimal data-storage
    in session?
    4. How to decide the granularity at which a managed-bean should be used
    for example :
    4.1 One bean-per-component
    4.2 One bean-per-form
    4.3 One bean-per-page
    Also i would like to know how to design managed beans from reusability perspective.
    Regards,
    Smita

    It quite hard to give a brief answer on all your questions.
    I think that you should take into account bean's scope when think about thread safety.
    Request scope bean is single threaded while for session scope you should provide locking mechanism because this bean can be accessed from different threads but only in case when one user simultaneously submit request from multiply browser windows.
    As for security you can use standard security API from within bean through javax.faces.context.ExternalContext
    It is convenient to use one backing bean for some or all components in web form.
    Do not mix form component and business data in one bean. Thus it is good design to have one set of beans for presentation logic and another one for business logic.

  • Backing Bean Design Issue

    Hi,
    I am new to JSF, we recently decided to move from JSF, as part of a rewrite.I have struts background.
    I have skimmed many JSF books including Core JSF, JSF inAction and many online resources.
    But i still have not been able to get any recommendation/best practice ABOUT Best practice
    for desigining BACKING BEANS for a big enterprise project.
    Almost all resources detail 2 available methodologies i.e.
    1) Have backing bean per page, which doest seem OO way. And if i move
    input components between pages, i have to modify the backing bean.
    2) Or have backing bean per business functionality. For example in my domain, 1 backing bean
    for User General Info, 1 backing bean for Driver History, 1 Bean for Vehicle Information.
    I would appreciate if i could get some input from experts in the area, to give some pointers,
    As this question is bound to come up in every JSF implementations. Having some common guidelines
    would greatly help.
    Thanks a lot
    GP

    Here is a pattern that worked well so far for us:
    Have a backing bean per transaction. Meaning if a transaction consists of multiple pages, you will still have one.
    However this transaction bean is not responsible for assembling data used by each page. Its main role is workflow, validation, and collecting data selected by user as pages are traversed as well as managing the actual transaction.
    It is typically a very thin bean with a scope of session and persists until transaction is completed.
    Now each page may display a different set of data like employee list in a datatable,...etc
    Assembling the data required to be displayed in a datatable will the responsibility of another bean type referred to as data bean. Please note that data beans could be used by different transactions or even different pages across transactions.
    There is a very loose coupling between a trx bean and a data bean (they really are not aware of each others). They essentially play different roles. The page knows about both the data and trx beans. But the reverse is not true. If you happen to use data beans with a scope of session, you will also need some clean up mechanism in your framework when a transaction is completed.
    I am sure others may have come across different patterns.

  • Is there any way to create backing bean, After page gets created?

    Hi
    Any one can please answer to my quick question !!!
    Is there any way to create the backing bean ,after a jsf page gets created using ADF ..?
    When i first time created the jsf jppx page i unchecked the option to generate backing bean, but later some time I would like to have backing bean for the newly created page. so is there any way to create backing bean ...?
    Thanks in Advance

    Have your page in the visual design mode then go to the Design->Page Properties menu and you'll be able to select auto-bind on the second tab.

  • How can I incorporate new backing beans into a Webcenter Spaces Server?

    I am using the WebCenterSpaces application in Customization Developer Role to make changes to some taskflows for a customer. In order to implement a desired change in the Nav Model for the customer, I had to write 3 very small backing beans. They compiled fine, the taskflow let me add them as managed beans. It even new about these backing beans, presumably because I compiled them. I made changes to the .jsff file to use them and that worked fine. However the metadata.mar created when I deploy the application does not have these new classes, so they will not get put into the WC_Spaces server when I use WLST to import the metadata. Can anybody tell me how to get new backing beans into WebCenter Spaces?
    I cant be the only one who has had to do this.
    Thanks.

    I don't know if you can import as part of the metadata import but an alternative will be to create a shared library out of your java classes and referencing the shared lib in spaces.

  • 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
    .

  • How to set button disabled property based on backing bean method

    JDeveloper 12c
    I have a table and a button on the page. When user selects certain table row I want to enable/disable the button.
    My backing bean (which has backing bean scope in the task flow where the page is) is
    package view.backing;
    public class Studybrowse {
        public Studybrowse() {
        public String b1_action() {
              //Do something here
            return null;
       public boolean b1_user_auth(){
           // Do something here to return true or false
            return true;
    My button is something like this:
    <af:button text="Do something" id="b4" action="#{backingBeanScope.Studybrowse.b1_action}"
                   disabled="#{backingBeanScope.Studybrowse.b1_user_auth THIS DOES NOT WORK}"
                   partialTriggers="t1"/>  
    The first problem is in design time, it says: "Reference backingBeanScope.Studybrowse.b1_user_auth not found"
    and in runtime, desired behavior does not work.
    Any help is appreciated

    Timo:
    I changed my backing bean method like this:
        public Boolean isUserAuthorized(){
            // some code here that will return true or false, hardcode to true for now
            return true;
    and the button disabled property like this:
               <af:button text="Go to Reports!" id="b5" action="#{backingBeanScope.Studybrowse.b1_action}"
                           disabled="#{backingBeanScope.Studybrowse.isUserAuthorized}"
                           partialTriggers="t1"/>                   
    Still same problem in design time there is a warning and 500 error in runtime.
    <Jan 22, 2014 11:36:15 AM CST> <Warning> <oracle.adf.view.rich.component.fragment.UIXRegion> <ADF_FACES-00009> <Error processing viewId: /studyBrowse URI: /studyBrowse.jsf actual-URI: null.
    javax.el.PropertyNotFoundException: //C:/Documents and Settings/rade/Application Data/JDeveloper/system12.1.2.0.40.66.68/o.j2ee/drs/ADFOracleReports/ViewControllerWebApp.war/studyBrowse.jsff @41,46 disabled="#{backingBeanScope.Studybrowse.isUserAuthorized}": The class 'view.backing.Studybrowse' does not have the property 'isUserAuthorized'.
      at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:111)
      at org.apache.myfaces.trinidad.bean.FacesBeanImpl.getProperty(FacesBeanImpl.java:73)
      at oracle.adfinternal.view.faces.renderkit.rich.ButtonRenderer.getDisabled(ButtonRenderer.java:436)
      at oracle.adfinternal.view.faces.renderkit.rich.ButtonRenderer.encodeAll(ButtonRenderer.java:270)
      at oracle.adf.view.rich.render.RichRenderer.encodeAll(RichRenderer.java:1578)
      at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:511)
      at org.apache.myfaces.trinidad.component.UIXComponentBase.encodeEnd(UIXComponentBase.java:1085)
      at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
      at org.apache.myfaces.trinidad.render.CoreRenderer.encodeChild(CoreRenderer.java:624)
      at oracle.adfinternal.view.faces.renderkit.rich.PanelGroupLayoutRenderer._encodeChild(PanelGroupLayoutRenderer.java:455)
      at oracle.adfinternal.view.faces.renderkit.rich.PanelGroupLayoutRenderer.access$1600(PanelGroupLayoutRenderer.java:30)
      at oracle.adfinternal.view.faces.renderkit.rich.PanelGroupLayoutRenderer$EncoderCallback.processComponent(PanelGroupLayoutRenderer.java:761)
      at oracle.adfinternal.view.faces.renderkit.rich.PanelGroupLayoutRenderer$EncoderCallback.processComponent(PanelGroupLayoutRenderer.java:653)
      at org.apache.myfaces.trinidad.component.UIXComponent.processFlattenedChildren(UIXComponent.java:195)
      at org.apache.myfaces.trinidad.component.UIXComponent.processFlattenedChildren(UIXComponent.java:326)
      at oracle.adfinternal.view.faces.taglib.region.IncludeTag$FacetWrapper.processFlattenedChildren(IncludeTag.java:683)
      at org.apache.myfaces.trinidad.component.UIXComponent.processFlattenedChildren(UIXComponent.java:171)
      at org.apache.myfaces.trinidad.component.UIXComponent.processFlattenedChildren(UIXComponent.java:326)
      at org.apache.myfaces.trinidad.component.UIXComponent.encodeFlattenedChildren(UIXComponent.java:291)
      at oracle.adfinternal.view.faces.renderkit.rich.PanelGroupLayoutRenderer.encodeAll(PanelGroupLayoutRenderer.java:366)
      at oracle.adf.view.rich.render.RichRenderer.encodeAll(RichRenderer.java:1578)
      at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:511)
      at org.apache.myfaces.trinidad.component.UIXComponentBase.encodeEnd(UIXComponentBase.java:1085)
      at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
      at org.apache.myfaces.trinidad.render.CoreRenderer.encodeChild(CoreRenderer.java:624)
      at org.apache.myfaces.trinidad.render.CoreRenderer.encodeAllChildren(CoreRenderer.java:641)
      at oracle.adf.view.rich.render.RichRenderer.encodeAllChildrenInContext(RichRenderer.java:3195)
      at oracle.adfinternal.view.faces.renderkit.rich.PageTemplateRenderer.encodeAll(PageTemplateRenderer.java:68)
      at oracle.adf.view.rich.render.RichRenderer.encodeAll(RichRenderer.java:1578)
      at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:511)
      at org.apache.myfaces.trinidad.component.UIXComponentBase.encodeEnd(UIXComponentBase.java:1085)
      at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
      at org.apache.myfaces.trinidad.render.CoreRenderer.encodeChild(CoreRenderer.java:624)
      at org.apache.myfaces.trinidad.render.CoreRenderer.encodeAllChildren(CoreRenderer.java:641)
      at oracle.adf.view.rich.render.RichRenderer.encodeAllChildrenInContext(RichRenderer.java:3195)
      at oracle.adfinternal.view.faces.renderkit.rich.RegionRenderer._encodeChildren(RegionRenderer.java:417)
      at oracle.adfinternal.view.faces.renderkit.rich.RegionRenderer.encodeAll(RegionRenderer.java:228)
      at oracle.adf.view.rich.render.RichRenderer.encodeAll(RichRenderer.java:1578)
      at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:511)
      at org.apache.myfaces.trinidad.component.UIXComponentBase.encodeEnd(UIXComponentBase.java:1085)
      at oracle.adf.view.rich.component.fragment.UIXRegion.encodeEnd(UIXRegion.java:288)
      at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
      at org.apache.myfaces.trinidad.render.CoreRenderer.encodeChild(CoreRenderer.java:624)
      at org.apache.myfaces.trinidad.render.CoreRenderer.encodeAllChildren(CoreRenderer.java:641)
      at oracle.adf.view.rich.render.RichRenderer.encodeAllChildrenInContext(RichRenderer.java:3195)
      at oracle.adfinternal.view.faces.renderkit.rich.FormRenderer.encodeAll(FormRenderer.java:275)
      at oracle.adf.view.rich.render.RichRenderer.encodeAll(RichRenderer.java:1578)
      at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:511)
      at org.apache.myfaces.trinidad.component.UIXComponentBase.encodeEnd(UIXComponentBase.java:1085)
      at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
      at org.apache.myfaces.trinidad.render.CoreRenderer.encodeChild(CoreRenderer.java:624)
      at org.apache.myfaces.trinidad.render.CoreRenderer.encodeAllChildren(CoreRenderer.java:641)
      at oracle.adf.view.rich.render.RichRenderer.encodeAllChildrenInContext(RichRenderer.java:3195)
      at oracle.adfinternal.view.faces.renderkit.rich.DocumentRenderer.encodeAll(DocumentRenderer.java:1473)
      at oracle.adf.view.rich.render.RichRenderer.encodeAll(RichRenderer.java:1578)
      at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:511)
      at org.apache.myfaces.trinidad.component.UIXComponentBase.encodeEnd(UIXComponentBase.java:1085)
      at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
      at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
      at oracle.adfinternal.view.faces.component.AdfViewRoot.encodeAll(AdfViewRoot.java:102)
      at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402)
      at org.apache.myfaces.trinidad.view.ViewDeclarationLanguageWrapper.renderView(ViewDeclarationLanguageWrapper.java:101)
      at org.apache.myfaces.trinidad.view.ViewDeclarationLanguageWrapper.renderView(ViewDeclarationLanguageWrapper.java:101)
      at org.apache.myfaces.trinidadinternal.application.ViewDeclarationLanguageFactoryImpl$ChangeApplyingVDLWrapper.renderView(ViewDeclarationLanguageFactoryImpl.java:338)
      at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
      at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288)
      at org.apache.myfaces.trinidadinternal.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:170)
      at oracle.adfinternal.view.faces.lifecycle.ResponseRenderManager.runRenderView(ResponseRenderManager.java:52)
      at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._renderResponse(LifecycleImpl.java:1104)
      at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:389)
      at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:255)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
      at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280)
      at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254)
      at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136)
      at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:341)
      at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)
      at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
      at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:192)
      at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
      at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:106)
      at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:478)
      at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
      at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:478)
      at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:303)
      at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:208)
      at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
      at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
      at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:137)
      at java.security.AccessController.doPrivileged(Native Method)
      at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315)
      at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:460)
      at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:120)
      at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:217)
      at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:81)
      at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
      at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:225)
      at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
      at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
      at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
      at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3367)
      at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3333)
      at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
      at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
      at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
      at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2220)
      at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2146)
      at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2124)
      at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1564)
      at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:254)
      at weblogic.work.ExecuteThread.execute(ExecuteThread.java:295)
      at weblogic.work.ExecuteThread.run(ExecuteThread.java:254)
    >
    <Jan 22, 2014 11:36:15 AM CST> <Error> <javax.enterprise.resource.webcontainer.jsf.application> <BEA-000000> <Error Rendering View[/studyBrowse]
    javax.el.PropertyNotFoundException: //C:/Documents and Settings/rade/Application Data/JDeveloper/system12.1.2.0.40.66.68/o.j2ee/drs/ADFOracleReports/ViewControllerWebApp.war/studyBrowse.jsff @41,46 disabled="#{backingBeanScope.Studybrowse.isUserAuthorized}": The class 'view.backing.Studybrowse' does not have the property 'isUserAuthorized'.
      at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:111)
      at org.apache.myfaces.trinidad.bean.FacesBeanImpl.getProperty(FacesBeanImpl.java:73)
      at oracle.adfinternal.view.faces.renderkit.rich.ButtonRenderer.getDisabled(ButtonRenderer.java:436)
      at oracle.adfinternal.view.faces.renderkit.rich.ButtonRenderer.encodeAll(ButtonRenderer.java:270)
      at oracle.adf.view.rich.render.RichRenderer.encodeAll(RichRenderer.java:1578)
      Truncated. see log file for complete stacktrace
    >

  • Need to Add and Remove Columns of ADF Read Only table from Backing bean

    I have a scenario where I am trying to Populate TransientVO which is shown has a ADF Read Only Table in page.
    I have couple of Check Boxes Based on their selection I am trying to render and hide certain Columns.
    But the Issue which I am facing is only the Column Header seems to change where as the Rows and Values doesnt..
    even If I apply the expression language rendering condition on the outputText inside those columns.. ..
    So I am thinking to add and remove VO Attribute columns to the table from backing bean.
    Need some sample code snippet or a better design to achieve this. Its kind of urgent too...having an aggressive deadline :(
    Please chip in People..
    Thanks in Advance .
    TK

    Table Code..
    <af:table value="#{bindings.InventoryGridTrans.collectionModel}"
                                    var="row"
                                    rows="#{bindings.InventoryGridTrans.rangeSize}"
                                    emptyText="#{bindings.InventoryGridTrans.viewable ? 'No data to display.' : 'Access Denied.'}"
                                    fetchSize="#{bindings.InventoryGridTrans.rangeSize}"
                                    rowBandingInterval="0" id="t4"
                                    partialTriggers="::sbcSales ::sbcUsage ::cb1">
                            <af:column sortProperty="Period" sortable="false"
                                       headerText="#{bindings.InventoryGridTrans.hints.Period.label}"
                                       id="c38">
                              <af:outputText value="#{row.Period}" id="ot33"/>
                            </af:column>
                            <af:column sortProperty="Past12SalesCount"
                                       sortable="false"
                                       headerText="#{bindings.InventoryGridTrans.hints.Past12SalesCount.label}"
                                       id="c29"
                                       rendered="#{backingBeanScope.IndexPageBackingBean.onUsage != true and backingBeanScope.IndexPageBackingBean.onSales == true}">
                              <af:outputText value="#{row.Past12SalesCount}"
                                             id="ot40"
                                             rendered="#{backingBeanScope.IndexPageBackingBean.onUsage != true and backingBeanScope.IndexPageBackingBean.onSales == true}"
                                             visible="#{backingBeanScope.IndexPageBackingBean.onUsage != true and backingBeanScope.IndexPageBackingBean.onSales == true}">
                                <af:convertNumber groupingUsed="false"
                                                  pattern="#{bindings.InventoryGridTrans.hints.Past12SalesCount.format}"/>
                              </af:outputText>
                            </af:column>
                            <af:column sortProperty="Past12UsageCount"
                                       sortable="false"
                                       headerText="#{bindings.InventoryGridTrans.hints.Past12UsageCount.label}"
                                       id="c40"
                                       rendered="#{backingBeanScope.IndexPageBackingBean.onUsage == true and backingBeanScope.IndexPageBackingBean.onSales != true}"
                                       visible="#{backingBeanScope.IndexPageBackingBean.onUsage == true and backingBeanScope.IndexPageBackingBean.onSales != true}">
                              <af:outputText value="#{row.Past12UsageCount}"
                                             id="ot47"
                                             rendered="#{backingBeanScope.IndexPageBackingBean.onUsage == true and backingBeanScope.IndexPageBackingBean.onSales != true}"
                                             visible="#{backingBeanScope.IndexPageBackingBean.onUsage == true and backingBeanScope.IndexPageBackingBean.onSales != true}">
                                <af:convertNumber groupingUsed="false"
                                                  pattern="#{bindings.InventoryGridTrans.hints.Past12UsageCount.format}"/>
                              </af:outputText>
                            </af:column>
                            </af:column>
                    </af:table>

  • Best practice for backing bean population? (also, ActionListener RANT)

    Hello,
    I am about 3/4 of the way through development of a small to medium size JSF application. Sometimes I really like JSF, but much of the time I am left puzzled or frustrated for hours trying to find workarounds to JSF's bugs/glitches and design flaws.
    For example, early on, I was impressed with how easily it was to invoke a method from a page using an actionlistener. Now that I'm actually building things with JSF, the actionlistener funtionality still seems cool, but incredibly half baked. I find myself using request parameters LIKE CRAZY to work around the fact that JSF doesnt support passing parameters directly to backing bean methods. This feels awkward and wrong considering the fact that JSF is intended to abstract the HTTP underpinnings. To add insult to injury, I often have to iterate through ALL of the request parameters looking for one that has an id with an ending matching my desired property name (since JSF appends it's own crap to the beginning). I don't like doing things in a hacky way. This seems very hacky, and I feel dirty doing it.
    So, my first question is, what is the best practice for populating backing beans??? How do others accomplish this. I can think of several other approaches, but none feel less hacky.
    Second, are there plans in the next spec (please say there are) to allow parameters to be passed to backing bean methods? If not, WHY THE HECK NOT?
    Even though JSF expert group people have been conspicuously absent from this forum of late, I'd really appreciate responses from you as well.
    Thank you for your thoughts.

    Hi BrownBear,
    I've been using JSF for about 6 months now and I'd be glade to help as much as I can.
    Concerning parameters, I'm not sure what your issue is but I use the f:param tag to pass them. If you could post an example of what you are trying to do, I could see exactly what your issue is. Maybe the f:param can't help you.
    As for best practice for populating backing beans, I personaly try to let JSF do as much as possible. For example, if I have a backing bean with five properties, I make sure that they all are on the JSP page the bean serves. If one of the property is just there as an Id like, lets say, a Person ID (DB row key), then I put it on my JSP page as a hidden input field. I do the same with the properties that only for display, if I want them to be back in my bean when request comesback.
    Hope this help some how. Please, feel free to ask specific questions related to your specific problem and I monitor this post and trnasfer to you the ;little JSF experience I have.
    I'm pretty happy with JSF as it is but it sure needs improvements. :) What the heck, it's version 1.01 after all, and the next release should be a great one with the integration of JSTL.
    Cheers

  • How to get specific rows from the vo or Iterator in the backing bean?

    Hi,
    I have to get the specific number of rows from iterator in the backing bean. means i want to get the records from the VO or Iterator only from 5 th record to 10th record its like rownum in SQL.
    We can use rownum in VO sql query. but there would be a performance issue with that ...
    SO i am trying to get the rows from ADF Iterator once we fetch from DB.
    Is it possible to do that ?
    Do we have any way to set the pointer to the VO/Iterator like setFirst() and after that setMaxResult to retrun the rows between first and maxresult..
    Thanks

    If this is for pagination, then af:table offers pagination by design when you set accessmode=RangePaging or RangePagingIncremental in VO. Paginated queries are fired when scroll down in the table. Explore this option before you try out any custom solution
    To answer the question,
    Note: same logic i have implpemented ADF with EJB ..In EJB Query class we have setFirst(int) and setMaxResult(int) methods...simply i did setFirst(30) and setMaxResult(10)..It worked fine...Theoretically speaking the same can be achieved by setting setRangeStart() on the viewobject(which in turn sets to the default rowset) and by setting max fetch size on VO + accessmode=RangePaging. However when you use table with ADF binding, these will be overridden by the binding layer. If you are not using ADF binding, then the above is same as what you did for JPA entity. Other option is, you build expert mode VO with rownum for this special case, which will work if you dont need to set accessmode=RangePaging for VO.

  • Removing Automatic Backing Bean Updates in Jdev 11.1.2.2.0

    Hi,
    in the User Guide and in the book "Jdeveloper 11g Handbook" I'm reading:
    Remove Automatic Backing Bean Updates
    1. Click page.jspx file tab. Click the Design tab
    2. Select Design | Page Properties and click the Component Binding tab. Unselect Auto Bind.
    Why I cannot locate Page Properties and the Component Bind tab?
    Where is? Can help me with some print screen?
    Thansk in advice

    Hi,
    Actually first chance to switch it off is when you create a new page: There is a managed bean tab in which you can do this. For existing pages, open the page in the visual editor and choose Design --> Page Properties from teh JDeveloper menu. In the opened dialog there is a "Component Binding" tab you press
    Frank

  • Problem while invoking popup from backing bean

    I am invoking a popup from backing bean method.
    The same backing bean method has the business logic which depends on the data collected from popup(user enters some data on popup).
    So I need the business logic to be executed after popup comes up.
    The popup is coming after the execution of return statement in backing bean method . How do i make popup trigger at earlier point in the method.
    <af:commandToolbarButton text="#{corePostupgradeuiBundle.SIGN_OFF_MIG}"
    id="socb52"
    partialSubmit="true"
    actionListener="#{viewScope.signoffBean.signOffAgents}"
    partialTriggers="t3"/>
    public void signOffAgents(ActionEvent event) throws SQLException {
    DCBindingContainer bc =
    (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
    DCIteratorBinding summaryIter =
    bc.findIteratorBinding("Signoff1Iterator");
    showPopup("credentials"); //will get credential details from user and store in credential Bean
    //Following logic uses the data collected from popup
    EMCredentialReference credRef= credentialBean.getCredReference();
    submitJOb(credRef);
    public static void showPopup(String popupId) {
    FacesContext context = FacesContext.getCurrentInstance();
    StringBuilder script = new StringBuilder();
    script.append("AdfPage.PAGE.findComponent(\"").append(popupId).append("\").show();");
    ExtendedRenderKitService erks =
    Service.getService(context.getRenderKit(),
    ExtendedRenderKitService.class);
    erks.addScript(context, script.toString());
    UIComponent component = context.getViewRoot().findComponent(popupId);
    RequestContext.getCurrentInstance().addPartialTarget(component);
    }

    Well, your work flow is wrong.
    What you try to accomplish should work out of the box as
    1) user hit toolbar button
    2) this opens a popup "credentials" which have listeners for ok and cancel
    3) use fills in data in popup and hit ok or cancel
    4) one of the listeners gets fired
    5a) if OK listener you do your business logic
    5b) if cancel you do something else
    So all you have to do is the use a af:af:showPopupBehavioron the toolbar button, add a popup canel listener (if you need to act on canel) dependign on your popup design (dialog or simple button) add the appropriate listeners and in the listener method so your business logic.
    Timo

  • ADF BC/Faces - Order of validation / backing bean action problem

    Hello,
    I want the user to enter the same "operation date" into all adf faces table rows created in one batch (one transaction).
    So I removed operation date field from the table and added "unbound" date field above the table. The date field value is then copied into all new rows in background. This process is invoked from backing bean from Commit button actionListener method.
    The problem is the validation of the operation date in entity is executed before a new date value is copied into the date attribute (validation of model is in JSF lifecycle executed prior invoking actions in backing beans).
    It means the user can enter dead lock when he enters invalid date (for example date higher then a valid value).
    Then after commit:
    1. First validation is ok (wrong date value haven't been copied into model yet)
    2. backing bean copy action is executed - model now contains wrong date value
    3. Validation before commit isn't successfult - error message is displayed
    4. User corrects the date value and presses commit again but:
    5. First validation is not successful - model still contains recent wrong date value - error message is displayed again
    6.There is no way out from this situation
    I'm going to override lifecycle to be able to invoke copy method before validation cycle. Is this solution acceptable? Do you have any other suggestion?
    Thank you.
    Rado

    hi Rado
    Would it make sense to design your ADF BC View Objects in some kind of master-detail shape that fits your data?
    View Object : OperationMaster (OperationDateAttr, ...)
    View Object : OperationDetail (OperationAttr1, OperationAttr2, ...)
    View Link : OperationDetailForMasterVL (based on some attribute that keeps the detail rows together)
    You would need some Application Module method that does the "row batch setup", but it look like your already have something like this.
    A change to OperationMaster.OperationDateAttr could update all its detail rows date attribute.
    I think that building a UI on this would be less "view layer dependant".
    Just a suggestion.
    regards
    Jan Vervecken

  • 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);

  • Confusion about backing beans and multiple pages

    Hello:
    I'm new to JSF and am confused by several high level and/or design issues surrounding backing beans. The
    application I am working on (not unlike many apps out there, I suspect), is comprised of several forms which
    collect various query parameters and other pages that display the query results via dataTables. Additionally, the
    displayed results have hyper-text enabled content sprinkled throughout in order to allow further "drill-down" to
    greater details about a given result.
    Obviously, the initial forms are backed by a managed bean that has the getters/setters for each of the various
    fields. From a modularization perspective, I'd prefer to have the query execution in a separate class entirely,
    which I can accomplish via delegation or actionListeners. Where I get confused is in the case that one of the
    hyper-text enabled fields needs to invoke yet another query requiring specific values from the original result.
    In this case, how should I design the beans to store the pertinent selection information AND still be able to
    have the resulting 'details' query in a separate class.
    For example, let's assume that I have a form with a simple backing bean to collect initial query params. The user
    fills out the form and clicks on submit. The action field of the <h:commandButton> tag inside the <h:form>
    delegates to a method which performs the query and returns a navigation string to the results display page. The
    results page then uses a <h:dataTable> tag to display the results. However, through the process of displaying the
    results, it will create the hyper-text links as follows:
                        <h:form>
                            <h:commandLink action="viewDetails">
                                <h:inputHidden id="P_ID" value="#{results.id}"/>
                                <h:outputText value="Click here to see details"/>
                            </h:commandLink>
                        </h:form>Notice that the value="#{results.id}" is the key field (in some case I may need more than one) that the subsequent
    details page will need to perform the query. However, this value is stored in the results attribute of the original
    query backing bean. I do NOT want to add yet another level of queries into the same backing bean as I would like
    to keep the original and details query beans separated for maintenance and style reasons. How then, can I get this
    specific value ("#{results.id}") into another backing bean that could be accessed by the subsequent details page
    and query? In general, how does one map a single display element to multiple backing beans (or accomplish the
    effect of having one 'source' bean's value end up in another 'destination' bean's attr? If this is not possible,
    then isn't the details query/page forced to use the same backing bean in order to get the data it needs? If so,
    how can it determine which id was selected in this case?
    I'd appreciate any thoughts, ideas and suggestions here! Is there a better way to design the above in order to
    maintain the separation of logic/control? What is the 'best practice' approach for this sort of stuff?
    Thanks much in advance!

    This is what I have done in the pass
    <h:commandLink action="#{AppAction.getRecord}" >
    <h:outputText value="#{bbr.id}"/>
    <f:param name = "recordid" value ="#{bbr.id}" />
    </h:commandLink>
    within the getRecord method
    String key = "";
    FacesContext facesContext = FacesContext.getCurrentInstance();
         ServletContext servletContext = ServletContext)facesContext.getExternalContext().getContext();
    key = (String)facesContext.getExternalContext().getRequestParameterMap().get("recordid");
    then call you dbmethod passing in the key of the record the user wants to edit
    and then simply return a string to what page you want the user to go to
    I think this is what your looking for

Maybe you are looking for

  • In Mail, how can I tell if an email has been read by the recipient?

    There used to be a way in msn to get a message when an email was read. Is there a way to do the same in Mail?

  • The first in-app purchase to app as "ready to sale"

    Hi, I have one app ready to sale (viewer type multi-issue) and now I did create the in-app purchase to upload a folio as retail issue within it. I read in Itunes connect guide that the first time I upload the in-app-purchase need to be together the n

  • JDE 9 Installation Issues...

    Hello, I'm not really sure which forum to post this in so hopefully I chose the correct one. I'm following the "Applications Installation Guide (Oracle)" which starts by talking about installing the E1Local database, the Deployment Server, and now th

  • Transactional RFC

    hi experts, In SM58(Transactional RFCs) Status text showing "document is being distributed changes are not possible". why this error comming. Any one can help me out in this. Regards, Babu

  • Finder freezes when searching

    I've been having a problem lately where whenever I search for an item- using either spotlight or the finder or addressbook, that the finder freezes up and I get the beachball immediately. I'll type in a word I'm searching for, but it basically freeze