JSF组件之selectManyCheckbox默认default 勾选checked

本文主要讲解selectManyCheckbox在渲染初始化的时候如何默认勾选部分checkBox。

网络上JSF组件的知识太少了,被selectManyCheckbox默认勾选的情况搞死了,浪费大半天时间才想明白它的工作原理。

组件源码如下:

<h:selectManyCheckbox value="#{CarouselBackingBean.cityExistList}" id ="cityRelatedList">
	<c:forEach items="#{CarouselBackingBean.cityModifyList}" var="city">
		<f:selectItem itemLabel="#{city.adminDivisionCnNm}" itemValue="#{city.adminDivisionCd}" itemDisabled="#{city.validIn}"/>
	</c:forEach>
</h:selectManyCheckbox >
因为用的是公司的开发框架,部分和JSF标准不太一致,但是原理都是相通的。

cityModifyList中的实体类的属性和组成不重要,重要的是理解一下两点:

1.通过代码

<c:forEach items="#{CarouselBackingBean.cityModifyList}" var="city">
		<f:selectItem itemLabel="#{city.adminDivisionCnNm}" itemValue="#{city.adminDivisionCd}" itemDisabled="#{city.validIn}"/>
</c:forEach>

生成的标准JSF代码:
   <f:selectItem itemValue="1" itemLabel="Item 1" itemDisabled ="true" />
   <f:selectItem itemValue="2" itemLabel="Item 2"  itemDisabled ="false" />

2.所有selectManyCheckbox中勾选的结果存储在 CarouselBackingBean.cityExistList 中,数据结构与cityExistList 如何定义的完全没有一丝关系。JSF将它强制设定为List<String>类型。

3.每勾选一个checkBox,cityExistList 都会size+1,多一个成员;取消勾选则少一个。

明白以上几点相信大家知道如何解决这个问题。

标准做法如下:

        该组件渲染时,在cityExistList中插入需要默认勾选的所有的itemValue。

范例:

我们要勾选

<f:selectItem itemValue="1" itemLabel="Item 1" itemDisabled ="true" />

      这个checkBox,则cityExistList中add一个String类型“1”即可。

附上JSF组件教程   http://www.tutorialspoint.com/jsf/jsf_selectmanycheckbox_tag.htm



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值