0

我有ArrayList一个支持 bean 和他在 JSF 页面中的渲染c:forEach。当我ArrayList通过索引删除元素时,jsf,无论索引是什么,总是删除最后一个元素。为什么会发生这种情况?

JSF 中的删除按钮是:

<a4j:commandButton immediate="true" action="#{bean.removeEntry}" ...

所以我使用即时属性。我认为问题是因为立即跳过 JSF 生命周期中的应用请求阶段。有可能吗?

如果是,那么在这种情况下如何运行应用请求阶段?

4

3 回答 3

1

您在使用 Facelets(.xhtml 页面)吗?如果是这样,您可能会遇到一些关于 JSTL 标记的常见误解,例如<c:foreach>. 这是一篇关于它的好文章:

https://rogerkeays.com/jsf-c-foreach-vs-ui-repeat

基本上,<c:foreach>仅在最初构建视图时处理;它不会成为组件树的一部分,并且在更改支持集合时可能会出现一些您不期望的行为。你最好<ui:repeat>改用它。

于 2012-02-09T21:17:11.190 回答
0

little more code would have helped, but immediate on command button is basically used for navigating away from current page as actionlistener or action will execute in apply request phase, typical case cancel button. This means you will not get updated value there. If your logic depends on some other uiinput make that immediate and you can hook things in valuechangelistener.

But I doubt what you are trying to achieve can be done in better way, have a look at this link @ SO

于 2012-02-03T12:36:41.773 回答
0

我遇到了类似的问题。我正在使用 'tr:iterator' 来迭代 ArrayList'<'Customer'>'(); 'ui:repeat' 解决了我的问题。谢谢。

于 2013-05-31T13:36:32.550 回答