今天同事開發(fā)的時候碰到一件很郁悶的事情,就是同樣的選擇控件在其他頁面使用沒有任何問題,在他的一個頁面里面使用第一次正常,之后打開就總是報錯,報錯提示就是控件ID重復(fù),好像是duplicate id 云云的。
我們嘗試了給每個控件都設(shè)定一個id,還是報錯,如果去掉另一個跟它有沖突的選擇控件,就沒問題,但是不可能去掉的,因?yàn)槟且豁?xiàng)需要去選擇。后來想了很多辦法,都不是很好,最后同事找到了一個辦法,在我封裝的底層BaseBean中,給程序生成的選擇項(xiàng)控件手動添加id:
items = new UISelectItems();
items.setId("j_id_"+String.valueOf(System.nanoTime()));
這樣,每個控件都有了一個唯一的ID,問題解決了。
提示:不可以用純數(shù)字做ID,會出現(xiàn)錯誤的。
這里使用了納秒來生成編號,因?yàn)楹撩脒€是經(jīng)常會出現(xiàn)id重復(fù)。
不知道為什么會有這個問題,其他頁面調(diào)用相同的底層都沒有任何問題,只有這個頁面會有,可以確定跟我們寫的代碼沒有關(guān)系,因?yàn)轫撁嬷匦伦鲞^的,一個控件一個控件添加的試的,就是那兩個控件同時出現(xiàn)時報錯,所以我想是不是底層生成控件ID那有bug,自己手動生成控件ID就沒有任何問題。以后有機(jī)會,再研究下源碼。
注意一下,大部分控件ID重復(fù)都是出現(xiàn)在選擇之類的控件上面。
---------------------------------------------------------
專注移動開發(fā)
Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
posted on 2008-11-26 15:31
TiGERTiAN 閱讀(1855)
評論(4) 編輯 收藏 所屬分類:
Java 、
JSF