今天同事開發的時候碰到一件很郁悶的事情,就是同樣的選擇控件在其他頁面使用沒有任何問題,在他的一個頁面里面使用第一次正常,之后打開就總是報錯,報錯提示就是控件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 閱讀(1854)
評論(4) 編輯 收藏 所屬分類:
Java 、
JSF