您的位置:首页 > Web前端 > JavaScript

jsf in action 笔记:bean的创建和初始化(三)(List,Map属性)--2008.04.12

2008-04-12 22:00 651 查看
2008.04.12 摘自 JSF in action Initializing List and array properties Page/150

1. List或者Array的类属性的设置与String类型的初始化很相似..xml文件的结构图为:

Figure 3.8 To initailize a managed bean property that is a List or array, you use the <list-entries> element and nest zero or more <value> or <null-value> elements in it. Optionally, you can specify the Java class for all of the values with the <value-class> element.

2. 与普通类型的属性不同的只是<value>替换成了<list-entries>,<value-class>指List或array中存放的对象的类型.

3. 如果bean中要配置的那个属性是null,那么配置类(facility)会创建一个new List or array,然后根据配置文件把配置信息add进去,如果属性不为空,则不会创建新对象,而直接把配置信息add到list或array中.示例中的代码是初始化user中的favoriteSites属性:

<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>org.jia.examples.UserBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
...
<managed-property>
<property-name>favoriteSites</property-name>
<list-entries>
<value>http://www.jsfcentral.com</value>
<value>http://www.theserverside.com</value>
</list-entries>
</managed-property>

<managed-property>
<property-name>favoriteNumbers</property-name>
<list-entries>
<value-class>java.lang.Integer</value-class>这里指定List或Array中存放的值的类型,这样下面的值会先转换成Integer对象
<value>31415</value>
<value>278</value>
</list-entries>
</managed-property>
...
</managed-bean>

可以在页面中有#{user.favoriteSites[0]}这样的EL表达式来引用List中的第一个值.

4. 对于Map类型的对象,与List类型的配置也很相似,只是把<list-entries>换成了<map-entries>

Figure 3.9 To initailize a managed bean property that is a Map, you use the <map-entries> element and nest one or more <map-entry> elements. Each <map-entry> can have either a <value> or a <null-value> element. Optionally, you can specify the Java class for all of the values with the <value-class> element.

示例代码为:

<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>org.jia.examples.UserBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
...
<managed-property>
<property-name>favoriteSitesMap</property-name>
<map-entries>
<map-entry>
<key>JSF Central</key>
<value>http://www.jsfcentral.com</value>
</map-entry>
<map-entry>
<key>TheServerSide.com</key>
<value>http://www.theserverside.com</value>
</map-entry>
</map-entries>
...
</managed-property>

页面中的可以这样来引用#{user.favoriteSitesMap['JSF Central']},如果是#{user.favoriteSitesMap}则会把map中的所有值输出.也可以指定key的类型,像这样:

<managed-property>
<property-name>favoriteNumbersMap</property-name>
<map-entries>
<key-class>java.lang.Integer</key-class>指定key的类型为Integer.
<map-entry>
<key>31415</key>
<value>A pi-like integer.</value>
</map-entry>
<map-entry>
<key>278</key>
<value>An e-like integer.</value>
</map-entry></map-entries>
</managed-property>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐