隨筆-348  評(píng)論-598  文章-0  trackbacks-0
          這個(gè)方法不是太完美,但可以解決JSF的DataTable和SelectOneRadio搭配問(wèn)題。每條記錄每一行一個(gè)radio進(jìn)行單選,只會(huì)選中一條。
          首先,在頁(yè)面中datatable的column中加入
                                                      <h:selectOneRadio id="xx" value="#{entrance.test}">
                                                          
          <f:selectItem itemValue="#{obj.corpOutInfo.coiId}" itemLabel="#{obj.corpOutInfo.corpName}"/>
                                                      
          </h:selectOneRadio>
          然后加入一段jquery的代碼用于在用戶切換選擇的時(shí)候,先將所有radio的checked狀態(tài)都置為false。
          <script type="text/javascript">
                  jQuery.noConflict();
          //與JSF搭配需要這句話,不然會(huì)有沖突
                  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>

          后臺(tái)綁定一個(gè)屬性,但這個(gè)屬性的set方法會(huì)被調(diào)用多次,但只有一次是有值的,所以用戶選擇了哪一行也好獲得。
              private String test;
              
              
          public String getTest() {
                  
          return test;
              }


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


              
          問(wèn)題算是解決了,實(shí)現(xiàn)很簡(jiǎn)單,但并不太完美。因?yàn)楹笈_(tái)的那個(gè)set方法會(huì)觸發(fā)很多次,次數(shù)跟當(dāng)前的radio數(shù)量一致,雖然不怎么影響性能,但用著總覺(jué)得不爽,后面再完善下。


          ---------------------------------------------------------
          專注移動(dòng)開發(fā)

          Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
          posted on 2009-01-11 16:36 TiGERTiAN 閱讀(5456) 評(píng)論(5)  編輯  收藏 所屬分類: Java 、JSF

          評(píng)論:
          # re: JSF中DataTable和SelectOneRadio搭配,每條記錄每一行一個(gè)radio進(jìn)行單選的解決辦法 2009-01-12 12:39 | 千里冰封
          直接用h:outputText畫出HTML語(yǔ)句,這樣豈不是更好,然后在后臺(tái)從parameter里面去取這個(gè)單選的參數(shù),應(yīng)該也是一種辦法,呵呵  回復(fù)  更多評(píng)論
            
          # re: JSF中DataTable和SelectOneRadio搭配,每條記錄每一行一個(gè)radio進(jìn)行單選的解決辦法[未登錄](méi) 2009-01-12 21:38 | tigertian
          @千里冰封
          有個(gè)問(wèn)題,就是你這個(gè)方法只能在jsf 1.2中使用,貌似1.1中沒(méi)有escape屬性,所以默認(rèn)escape為true,在output里面畫不出來(lái),會(huì)被Html Encode掉,如果單獨(dú)使用<input type="radio">控件,會(huì)發(fā)現(xiàn)jsf 1.1中的datatable無(wú)法把這個(gè)純html控件包含進(jìn)來(lái)。而我目前碰到的應(yīng)用環(huán)境正是jsf 1.1,所以我也想找到一個(gè)更好的辦法,大家討論討論哈。  回復(fù)  更多評(píng)論
            
          # re: JSF中DataTable和SelectOneRadio搭配,每條記錄每一行一個(gè)radio進(jìn)行單選的解決辦法 2009-01-13 08:48 | TiGERTiAN
          @千里冰封
          今天測(cè)試了一下,1.1版本的outputText也有escape屬性,但我忘記是哪個(gè)控件跟1.2不一樣沒(méi)有escape屬性的,有了之后,就可以畫出來(lái)了。  回復(fù)  更多評(píng)論
            
          # re: JSF中DataTable和SelectOneRadio搭配,每條記錄每一行一個(gè)radio進(jìn)行單選的解決辦法 2009-12-27 21:28 | frankie
          # re: JSF中DataTable和SelectOneRadio搭配,每條記錄每一行一個(gè)radio進(jìn)行單選的解決辦法 2009-12-27 22:17 | TiGERTiAN
          @frankie
          謝謝哈,不過(guò)我用的是sun的實(shí)現(xiàn)。  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 乌鲁木齐县| 永春县| 六安市| 天气| 惠水县| 泾源县| 南康市| 成都市| 兴化市| 云阳县| 乌兰浩特市| 玉树县| 甘孜| 阜康市| 民和| 静宁县| 毕节市| 平武县| 梁河县| 孟州市| 北安市| 房产| 神农架林区| 绥阳县| 城口县| 嫩江县| 略阳县| 锡林浩特市| 莱州市| 石泉县| 扎赉特旗| 大理市| 新民市| 乐陵市| 砚山县| 陇南市| 高阳县| 稷山县| 法库县| 闻喜县| 城市|