JSF中DataTable和SelectOneRadio搭配,每条记录每一行一个radio进行单选的解决办法

这个方法不是太完美,但可以解决JSF的DataTable和SelectOneRadio搭配问题。每条记录每一行一个radio进行单选,只会选中一条。
首先,在页面中datatable的column中加入
                                            < h:selectOneRadio id ="xx" value ="#{entrance.test}" >
                                               
< f:selectItem itemValue ="#{obj.corpOutInfo.coiId}" itemLabel ="#{obj.corpOutInfo.corpName}" />
                                           
</ h:selectOneRadio >
然后加入一段jquery的代码用于在用户切换选择的时候,先将所有radio的checked状态都置为false。
< script type ="text/javascript" >
        jQuery.noConflict();
//与JSF搭配需要这句话,不然会有冲突
        jQuery(document).ready(function() {

            jQuery(
":radio").click(function(){
                update(
this);

             }
);
        }
);
       
</ script >
       
< script type ="text/javascript" >
       
function update(currentRadio)
       
{

           
var parentTables = jQuery(currentRadio).parents("table");
           
var parentTable = parentTables[0];   

           
var childDivs = jQuery(parentTable).next("div");       
           
var childDiv = childDivs[0];       

            jQuery(childDiv).contents().find(
":radio").each(function() {
               
this.checked = false;
            }
);
           
            currentRadio.checked
= true;
        }


       
</ script >

后台绑定一个属性,但这个属性的set方法会被调用多次,但只有一次是有值的,所以用户选择了哪一行也好获得。
    private String test;
   
   
public String getTest() {
       
return test;
    }


   
public void setTest(String test) {
        System.out.println(
"=========================" + test);
    }


   
问题算是解决了,实现很简单,但并不太完美。因为后台的那个set方法会触发很多次,次数跟当前的radio数量一致,虽然不怎么影响性能,但用着总觉得不爽,后面再完善下。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值