<web-app>
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/beans.xml</param-value>
</context-param>
...
</web-app>
定義檔可以有多個(gè),中間以 "," 區(qū)隔,例如:
/WEB-INF/navigation.xml,/WEB-INF/beans.xml
一個(gè)Bean最基本要定義Bean的名稱、類別與存活範(fàn)圍,例如:
....
<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目前的執(zhí)行環(huán)境物件,接著嘗試取得javax.faces.el.ValueBinding物件,從中取得指定的Bean物件,例如:
FacesContext context = FacesContext.getCurrentInstance();
ValueBinding binding =
context.getApplication().createValueBinding("#{user}");
UserBean user = (UserBean) binding.getValue(context);
如果只是要嘗試取得Bean的某個(gè)屬性,則可以如下:
FacesContext context = FacesContext.getCurrentInstance();
ValueBinding binding =
context.getApplication().createValueBinding(
"#{user.name}");
String name = (String) binding.getValue(context);
如果有必要在啟始Bean時(shí),自動(dòng)設(shè)置屬性的初始值,則可以如下設(shè)定:
....
<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>
....
如果要設(shè)定屬性為 null 值,則可以使用<null-value/>標(biāo)籤,例如:
....
<managed-property>
<property-name>name</property-name>
<null-value/>
</managed-property>
<managed-property>
<property-name>password</property-name>
<null-value/>
</managed-property>
....
當(dāng)然,您的屬性不一定是字串值,也許會(huì)是int、float、boolean等等型態(tài),您可以設(shè)定<value> 值時(shí)指定這些值的字串名稱,JSF會(huì)嘗試進(jìn)行轉(zhuǎn)換,例如設(shè)定為true時(shí),會(huì)嘗試使用Boolean.valueOf()方法轉(zhuǎn)換為boolean的 true,以下是一些可能進(jìn)行的轉(zhuǎn)換:
型態(tài) | 轉(zhuǎn)換 |
short、int、long、float、double、byte,或相應(yīng)的Wrapper類別 | 嘗試使用Wrapper的valueOf()進(jìn)行轉(zhuǎn)換,如果沒(méi)有設(shè)置,則設(shè)為 0 |
boolean 或 Boolean | 嘗試使用Boolean.valueOf()進(jìn)行轉(zhuǎn)換,如果沒(méi)有設(shè)置,則設(shè)為 false |
char 或 Character | 取設(shè)置的第一個(gè)字元,如果沒(méi)有設(shè)置,則設(shè)為0 |
String 或 Object | 即設(shè)定的字串值,如果沒(méi)有設(shè)定,則為空字串new String("") |
您也可以將其它產(chǎn)生的Bean設(shè)定給另一個(gè)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>
....
在上面的設(shè)定中,在OtherBean中的user屬性,接受一個(gè)UserBean型態(tài)的物件,我們?cè)O(shè)定為前一個(gè)名稱為user的UserBean物件。
jwebee
我的個(gè)人網(wǎng)站