带有 2 个依赖组合的 ConcurrenModificationException(ZK 框架)
我有一个 zul,它有两个相关的组合。当检查第一个组合 (cb_empresa_detalle) 的项目时,第二个组合 (cb_agente_detalle) 加载其项目。
在我的控制器中,我有这样的代码:
@EventHandler("cb_empresa_detalle.onSelect")
public void loadAgentes(Event evt) throws WrongValueException,
InterruptedException {
if (cb_empresa_detalle.getSelectedItem() != null) {
idEmpresa = (String) cb_empresa_detalle.getSelectedItem()
.getValue();
// cb_agente_detalle.getChildren().clear();
cb_agente_detalle.getItems().clear();
(...)
当我在第一个组合中签入不同的项目时,此代码在行中抛出 ConcurrenModificationException (我尝试了以下两个选项):
cb_agente_detalle.getChildren().clear(); // is now comented
cb_agente_detalle.getItems().clear();
另外,我尝试了这个:
while (cb_agente_detalle.getItemCount() > 0) {
cb_agente_detalle.removeChild(cb_agente_detalle.getFirstChild());
}
有什么想法吗?
I have a zul wich has two dependent combos. When an item of the first combo (cb_empresa_detalle) is checked then the second combo (cb_agente_detalle) loads its items.
In my controller I have this code:
@EventHandler("cb_empresa_detalle.onSelect")
public void loadAgentes(Event evt) throws WrongValueException,
InterruptedException {
if (cb_empresa_detalle.getSelectedItem() != null) {
idEmpresa = (String) cb_empresa_detalle.getSelectedItem()
.getValue();
// cb_agente_detalle.getChildren().clear();
cb_agente_detalle.getItems().clear();
(...)
This code throws a ConcurrenModificationException in lines (I tried the following two options), when I check in diferent items in first combo:
cb_agente_detalle.getChildren().clear(); // is now comented
cb_agente_detalle.getItems().clear();
Also, I tried this:
while (cb_agente_detalle.getItemCount() > 0) {
cb_agente_detalle.removeChild(cb_agente_detalle.getFirstChild());
}
Any idea?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当您使用迭代器迭代集合时尝试从集合中删除项目时,会引发 ConcurrentModificationException。
只要确保情况并非如此即可。
A ConcurrentModificationException is thrown when you try to delete items from a collection when you're iterating over it using an iterator.
Just make sure it is not the case.