Managing Bean Example

This section describes you the use of the managed bean in an JSF
application. In an JSF application, backing beans (managed beans) are used that can
be associated with UI components. Backing Beans are nothing but
JavaBeans which defines properties and methods. These properties are
bound to component values or component instances. setX() and getX()
methods are defined and implemented for all properties. We can also
define methods that can be used for different purpose like event
handling, navigation, validation etc. that are associated with
component. To bind value of the component to the property of the
bean or to refer method of the bean from component tag, Expression
Language (EL) syntax is used. For example, #{BeanName.propertyName}can
be used to bind the value of the component to the property "propertyName"
of the bean "BeanName". #{BeanName.methodName} can
be used to refer method "methodName()" of the bean "BeanName".
This tutorial explains how backing bean can be
used in our application "managedbean". In this
application "Bean.java" is backing bean which has been
used further in view pages. We have saved this JavaBean file in WEB-INF\classes\roseindia
directory of this application.
Step1 : Create a JavaBean file "Bean.java".
package roseindia;
public class Bean{
private String thought_of_the_day;
private String userName;
private String phoneNo;
private String company;
public void setThought_of_the_day(String thought_of_the_day){
this.thought_of_the_day=thought_of_the_day;
}
public void setUserName(String userName){
this.userName=userName;
}
public void setPhoneNo(String phoneNo){
this.phoneNo=phoneNo;
}
public void setCompany(String company){
this.company=company;
}
public String getThought_of_the_day(){
return thought_of_the_day;
}
public String getUserName(){
return userName;
}
public String getPhoneNo(){
return phoneNo;
}
public String getCompany(){
return company;
}
public String selectPage(){
if(company.equals("RoseIndia")){
return "rose";
}
else{
return "other";
}
}
}
|
In the above file, there are four
properties "thought_of_the_day", "useName", "phoneNo",
"company" and setter and getter methods for each property to
get and set values for the components respectively . There is one more
method selectPage() that returns "rose" and "other"
strings according to the condition.
Step2 : Configure the configuration file
"faces-config.xml". Just add lines given below in this file.
To configure the bean in configuration file <managed-bean> element
is used. Its child element <managed-bean-name> is used to give the
name of the bean to be used in the application to refer the bean class
specified in another child element <managed-bean-class>. We can
also specify the property value in the configuration file. For this
<managed-property> child element is used where its child element
<property-name> specifies the name of the property and
<value> specifies its value.
<managed-bean>
<managed-bean-name>Bean</managed-bean-name>
<managed-bean-class>roseindia.Bean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>thought_of_the_day</property-name>
<value>It's good to be important but it's more important
to be good.
</value>
</managed-property>
</managed-bean> |
For navigation purpose add following
lines to the configuration file.
<navigation-rule>
<from-view-id>/pages/user.jsp</from-view-id>
<navigation-case>
<from-outcome>rose</from-outcome>
<to-view-id>/pages/welcome.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>other</from-outcome>
<to-view-id>/pages/otherpage.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/pages/welcome.jsp</from-view-id>
<navigation-case>
<from-outcome>Edit</from-outcome>
<to-view-id>/pages/user.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/pages/otherpage.jsp</from-view-id>
<navigation-case>
<from-outcome>back</from-outcome>
<to-view-id>/pages/user.jsp</to-view-id>
</navigation-case>
</navigation-rule> |
Step3 : Now we are ready to create
view pages and use bean properties and methods in the application . In
this example, we have three JSP pages "user.jsp",
"welcome.jsp", "otherpage.jsp" in the "pages"
directory within the application home directory.
user.jsp :
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
<head><title>Managed Bean Example(User Page)</title></head>
<body>
<f:view>
<h:form>
<h:outputText value="User Name." /><br>
<h:inputText value="#{Bean.userName}"/><br><br>
<h:outputText value="Phone No." /><br>
<h:inputText value="#{Bean.phoneNo}" /><br><br>
<h:outputText value="Company Name" /><br>
<h:inputText value="#{Bean.company}" /><br><br>
<h:outputText value="Thought of the day" /><br>
<h:inputText value="#{Bean.thought_of_the_day}" />
<h:commandButton value="Submit" action="#{Bean.selectPage}" />
</h:form>
</f:view>
</body>
</html> |
In this page we have associated values of the
UIcomponents to the backing bean's properties. This binding has
been shown by bold letters. userName, phoneNo, company,
thought_of_the_day properties are bound to the input components.
When the user first calls this page, the last input component will be
shown with the value specified in the "faces-config.xml"
file because we have already specified this value in the configuration
file. When the user fills values in these components these values are
stored in the properties of the bean. So when they are again bound with
the component, stored values are used. For example, in "welcome.jsp"
page we have again used these properties values so it considers the
values filled in previous page. Command button component's action is
associated with selectPage() method of the Bean class. This
method returns a String value either "rose" or "other".
This value is set to the action attribute of the commandButton
tag. This button works according to the returned value and the
navigation rules specified in the "faces-config.xml"
file.
welcome.jsp :
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
<head><title>Managed Bean Example (Welcome page)</title></head>
<body>
<f:view>
<h:form>
<h:outputText value="You have entered :" /><hr>User Name :
<h:outputText value="#{Bean.userName}" /><br> Password :
<h:outputText value="#{Bean.phoneNo}" /><br> Phone No :
<h:outputText value="#{Bean.company}" /><br>
<h:commandButton value="Edit Details" action="Edit"/><hr>
<h:outputText value="#{Bean.thought_of_the_day}" /></b>
</h:form>
</f:view>
</body>
</html> |
otherpage.jsp :
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
<head><title>Managed Bean Example (otherpage page)</title></head>
<body>
<f:view>
<h:form>
<h:outputText value="Sorry........This is for RoseIndia
employees only. " /><br>
<h:commandButton value="Go Back" action="back"/>
</h:form>
</f:view>
</body>
</html> |
Output : This is the first page
which has four input boxes and one submit button. Last input box already
contains some text which comes from the value specified in the
configuration file.

Now suppose user fills values as shown below :

The page below comes if the user fills Company Name as "RoseIndia".

The page below comes if user doesn't fill Company Name as "RoseIndia".


|