gpt4 book ai didi

java - 使用 在 xhtml 页面中迭代时从列表中删除元素

转载 作者:行者123 更新时间:2023-11-30 08:27:54 25 4
gpt4 key购买 nike

我想显示名为 documentAuthorBeanToShow 的列表中的 Authors 的名称。我在 inputtexts 中显示它们,并且我正在显示一个 button 以删除显示的每个 Author。当我单击按钮时,我想从 list 中删除 Author 并自动将其从 View 中删除。

问题是:当我点击按钮时,出现异常:

HTTP STATUS 500 - java.util.ConcurrentModificationException

我检查了这里的一些链接,发现我需要使用 Iterator.remove() 方法在迭代时从列表中删除元素。但我的问题是关于 JSF。我不知道如何在 xhtml 页面中使用迭代器。完成我正在尝试的简单任务的最佳方法是什么?

已编辑 - 现在使用 Iterator.remove()。使用下面的代码,我没有得到上述异常。要使其正常工作,只需添加我选择的答案中描述的属性即可。

看代码:

xhtml

 <a4j:repeat value="#{editDocController.documentAuthorsBeanToShow}" var="author" >
<br />
<h:inputText value="#{author.name}" disabled="true" />
<h:commandButton type="submit" action="#{editDocController.removeAutor(author.uri)}" value="Remover" />
<br />
</a4j:repeat>

editDocController

public void removeAutor(String uri) {   
Iterator<AuthorBean> itAuthorBean = this.documentAuthorsBeanToShow.iterator();
while(itAuthorBean.hasNext()) {
AuthorBean a = itAuthorBean.next();
if(a.getUri().equals(uri)) {
itAuthorBean.remove();
}
}

}

谢谢!

最佳答案

removeAutor() 方法中使用 Iterator

public void removeAutor(String uri) {
Iterator<AuthorBean> iterator = documentAuthorsBeanToShow.iterator();
while (iterator.hasNext()) {
if(iterator.next().getUri().equals(uri)){
iterator.remove();
}
}
}

关于java - 使用 <a4j :repeat> 在 xhtml 页面中迭代时从列表中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20545966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com