jsf-Managed Beans-Beans 的組態與設定

JSF預設會讀取faces-config.xml中關於Bean的定義,如果想要自行設置定義檔的名稱,我們是在web.xml中提供javax.faces.CONFIG_FILES參數,例如:
 
<web-app>
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/beans.xml</param-value>
</context-param>

...
</web-app>

 

定義檔可以有多個,中間以 "," 區隔,例如:
 
/WEB-INF/navigation.xml,/WEB-INF/beans.xml

 

一個Bean最基本要定義Bean的名稱、類別與存活範圍,例如:
 
....
<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>
onlyfun.caterpillar.UserBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
....

 

如果要在其它類別中取得Bean物件,則可以先取得javax.faces.context.FacesContext,它代表了JSF目前的執行環境物件,接著嘗試取得javax.faces.el.ValueBinding物件,從中取得指定的Bean物件,例如:
 
FacesContext context = FacesContext.getCurrentInstance();
ValueBinding binding =
context.getApplication().createValueBinding("#{user}");
UserBean user = (UserBean) binding.getValue(context);

 

如果只是要嘗試取得Bean的某個屬性,則可以如下:
 
FacesContext context = FacesContext.getCurrentInstance();
ValueBinding binding =
context.getApplication().createValueBinding(
"#{user.name}");
String name = (String) binding.getValue(context);

 

如果有必要在啟始Bean時,自動設置屬性的初始值,則可以如下設定:
 
....
<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>
onlyfun.caterpillar.UserBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>name</property-name>
<value>caterpillar</value>
</managed-property>
<managed-property>
<property-name>password</property-name>
<value>123456</value>
</managed-property>
</managed-bean>
....

 

如果要設定屬性為 null 值,則可以使用<null-value/>標籤,例如:
 
....
<managed-property>
<property-name>name</property-name>
<null-value/>
</managed-property>
<managed-property>
<property-name>password</property-name>
<null-value/>
</managed-property>
....

 

當然,您的屬性不一定是字串值,也許會是int、float、boolean等等型態,您可以設定<value> 值時指定這些值的字串名稱,JSF會嘗試進行轉換,例如設定為true時,會嘗試使用Boolean.valueOf()方法轉換為boolean的 true,以下是一些可能進行的轉換:

 

型態 轉換
short、int、long、float、double、byte,或相應的Wrapper類別 嘗試使用Wrapper的valueOf()進行轉換,如果沒有設置,則設為 0
boolean 或 Boolean 嘗試使用Boolean.valueOf()進行轉換,如果沒有設置,則設為 false
char 或 Character 取設置的第一個字元,如果沒有設置,則設為0
String 或 Object 即設定的字串值,如果沒有設定,則為空字串new String("")

 

您也可以將其它產生的Bean設定給另一個Bean的屬性,例如:
 
....
<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>
onlyfun.caterpillar.UserBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>

<managed-bean>
<managed-bean-name>other</managed-bean-name>
<managed-bean-class>
onlyfun.caterpillar.OtherBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>user</property-name>
<value>#{user}</value>
</managed-property>
</managed-bean>
....

 

在上面的設定中,在OtherBean中的user屬性,接受一個UserBean型態的物件,我們設定為前一個名稱為user的UserBean物件。
阅读更多
文章标签: JSF Bean Web XML
个人分类: JSF
想对作者说点什么? 我来说一句

打造個性化的XOOPS網站

2012年03月15日 1.76MB 下载

SVN安裝與設定(ByTortoise)

2008年12月16日 72KB 下载

VB 資料型態與宣告

2012年12月02日 780KB 下载

三菱plc fx

2013年07月11日 828KB 下载

多态与虚拟(多型與虛擬)

2017年05月19日 5.39MB 下载

组态王卸载工具UninstallKV

2010年06月17日 952KB 下载

MAYA角色設定與角色動畫

2013年07月22日 12.41MB 下载

如何在PC安裝CE模擬器

2013年05月02日 608KB 下载

没有更多推荐了,返回首页

关闭
关闭
关闭