隨筆-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 閱讀(1859) 評論(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自己生成的還有這種錯誤。。。汗。。。  回復  更多評論
            
          主站蜘蛛池模板: 平南县| 昆山市| 宜兴市| 栾川县| 九寨沟县| 福州市| 忻州市| 全椒县| 香港| 车险| 墨脱县| 旺苍县| 图们市| 额敏县| 泗阳县| 涞水县| 建始县| 海原县| 巢湖市| 和田县| 思茅市| 香河县| 青冈县| 石门县| 广元市| 临江市| 嘉定区| 桓仁| 若羌县| 云林县| 文登市| 乳山市| 泽库县| 炉霍县| 福鼎市| 祁东县| 治多县| 漾濞| 叙永县| 昌都县| 泰和县|