Oracle® Application Development Framework Developer's Guide For Forms/4GL Developers 10g (10.1.3.1.0) Part Number B25947-01 |
|
|
View PDF |
Often, pages require information from other pages. Instead of setting this information directly on a page (for example, by setting the parameter value on the page's page definition file), which essentially hardcodes the information, you can store this information on a managed bean. As long as the bean is stored in a scope that is accessible, any value for an attribute on the bean can be accessed using an EL expression.
Tip: Use managed beans to store only "bookeeping" information. All application data and processing should be handled by logic in the business layer of the application. |
For example, the SRMain page needs to know the page from which the user navigated from in order to return the user to the correct page. The SRDemo application has a managed bean that holds this information, allowing the sending page to set the information, and the SRMain page to use the information in order to determine where to navigate.
Managed beans are Java classes that you register with the application using the faces-config.xml
file. When the JSF application starts up, it parses this configuration file and the beans are made available and can be referenced in an EL expression, allowing access to the beans' properties and methods. Whenever a managed bean is referenced for the first time and it does not already exist, the Managed Bean Creation Facility instantiates the bean by calling the default constructor method on the bean. If any properties are also declared, they are populated with the declared default values.
Using the JSF Configuration Editor in JDeveloper, you can create a managed bean and register it with the JSF application at the same time.
To create a managed bean:
Open the faces-config.xml
file. This file is stored in the <project_name>/WEB-INF
directory.
At the bottom of the window, select the Overview tab.
In the element list on the left, select Managed Beans. Figure 17-1 shows the JSF Configuration Editor for the faces-config.xml file.
Click the New button to open the Create Managed Bean dialog, as shown in Figure 17-2. Enter the name and fully qualified class path for the bean. Select a scope, select the Generate Java File checkbox, and click OK.
Tip: If the managed bean will be used by multiple pages in the application, you should set the scope toSession . However, then the bean cannot contain any reference to the binding container, as the data on the binding object is on the request scope, and therefore cannot "live" beyond a request. For examples of when you may need to reference the binding container, see Section 17.5, "Overriding Declarative Methods". |
You can optionally use the arrow to the left of the Managed Properties bar to display the properties for the bean. Click New to create any properties. Press F1 for additional help with the configuration editor.
Note: While you can declare managed properties using the configuration editor, the corresponding code is not generated on the Java class. You will need to add that code by creating private member fields of the appropriate type and then using the Generate Accessors... menu item on the context menu of the code editor to generate the corresponding getter and setter methods for these bean properties. |
When you use the configuration editor to create a managed bean, and elect to generate the Java file, JDeveloper creates a stub class with the given name and a default constructor. Example 17-1 shows the code added to the MyBean
class stored in the view package.
Example 17-1 Generated Code for a Managed Bean
package view; public class MyBean { public MyBean() { } }
JDeveloper also adds a managed-bean
element to the faces-config.xml
file. This declaration allows you to easily access any logic on the bean using an EL expression that refers to the given name. Example 17-2 shows the managed-bean
element created for the MyBean
class.
Example 17-2 Managed Bean Configuration on the faces-config.xml File
<managed-bean> <managed-bean-name>my_bean</managed-bean-name> <managed-bean-class>view.MyBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean>
You now need to add the logic required by your pages and methods in your application. You can then refer to that logic using an EL expression that refers to the managed-bean-name
given to the managed bean. For example, to access the myInfo
property on the bean, the EL expression would be:
#{my_bean.myInfo}
The following sections of this chapter provide examples of using the SRDemo application's userState
managed bean (view.UserSystemState.java
) to hold or get information. Please see those sections for more detailed examples of using a managed bean to hold information.