今天同事开发的时候碰到一件很郁闷的事情,就是同样的选择控件在其他页面使用没有任何问题,在他的一个页面里面使用第一次正常,之后打开就总是报错,报错提示就是控件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 阅读(1844)
评论(4) 编辑 收藏 所属分类:
Java 、
JSF