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

2008.04.12  摘自 JSF in action Initializing List and array properties  Page/150

1.  List或者Array的类属性的设置与String类型的初始化很相似..xml文件的结构图为:JSF List type property initializing 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>JSF map initilalizingFigure 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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值