隨筆-348  評論-598  文章-0  trackbacks-0
                  今天同事開發的時候碰到一件很郁悶的事情,就是同樣的選擇控件在其他頁面使用沒有任何問題,在他的一個頁面里面使用第一次正常,之后打開就總是報錯,報錯提示就是控件ID重復,好像是duplicate id 云云的。
                  我們嘗試了給每個控件都設定一個id,還是報錯,如果去掉另一個跟它有沖突的選擇控件,就沒問題,但是不可能去掉的,因為那一項需要去選擇。后來想了很多辦法,都不是很好,最后同事找到了一個辦法,在我封裝的底層BaseBean中,給程序生成的選擇項控件手動添加id:
                      items = new UISelectItems();
                      items.setId(
          "j_id_"+String.valueOf(System.nanoTime()));
          這樣,每個控件都有了一個唯一的ID,問題解決了。
          提示:不可以用純數字做ID,會出現錯誤的。

          這里使用了納秒來生成編號,因為毫秒還是經常會出現id重復。

          不知道為什么會有這個問題,其他頁面調用相同的底層都沒有任何問題,只有這個頁面會有,可以確定跟我們寫的代碼沒有關系,因為頁面重新做過的,一個控件一個控件添加的試的,就是那兩個控件同時出現時報錯,所以我想是不是底層生成控件ID那有bug,自己手動生成控件ID就沒有任何問題。以后有機會,再研究下源碼。

          注意一下,大部分控件ID重復都是出現在選擇之類的控件上面。

          ---------------------------------------------------------
          專注移動開發

          Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
          posted on 2008-11-26 15:31 TiGERTiAN 閱讀(1858) 評論(4)  編輯  收藏 所屬分類: JavaJSF

          評論:
          # re: JSF生成控件ID重復的解決辦法 2008-11-27 16:34 | fee
          注意下組件的嵌套,另外注意定義ID和自動分配ID的沖突。應該不是bug  回復  更多評論
            
          # re: JSF生成控件ID重復的解決辦法 2008-11-27 17:03 | TiGERTiAN
          @fee
          組件的嵌套都注意的,我們沒有自定義ID,全部自動生成,第一遍打開頁面是好的,第二遍打開就有問題了,而且很莫名其妙,幾個人都重新做了,還是有問題,不知道是不是我們自己寫的框架跟它有沖突,但檢查代碼,都沒有發現什么問題,其他頁面也是好的。  回復  更多評論
            
          # re: JSF生成控件ID重復的解決辦法[未登錄] 2008-12-01 10:23 | 靈韻
          我們那時候用的是NETBEANS,也遇到這個問題,然后我們在頁面的prerender()方法中調用了
          public void prerender() {
          if(super.isPostBack())
          layoutPanel1.getChildren().remove(layoutPanel1.findComponent("lstRole"));
          }  回復  更多評論
            
          # re: JSF生成控件ID重復的解決辦法 2008-12-01 12:32 | TiGERTiAN
          @靈韻
          你是移除已存在的控件?還是固定ID的,我們這個有點蹊蹺就是,所有ID都是JSF自己生成的還有這種錯誤。。。汗。。。  回復  更多評論
            
          主站蜘蛛池模板: 乐平市| 望江县| 涞源县| 黄大仙区| 大宁县| 林周县| 明水县| 罗平县| 平凉市| 宣威市| 苏尼特左旗| 九龙坡区| 应用必备| 东安县| 阳高县| 肇州县| 通河县| 古丈县| 梧州市| 无棣县| 电白县| 个旧市| 来宾市| 志丹县| 晋江市| 故城县| 三江| 那坡县| 陵川县| 炉霍县| 余干县| 城步| 南部县| 东城区| 安塞县| 沙雅县| 六安市| 肥东县| 安乡县| 沽源县| 沧源|