簡體   English   中英

Jsf 總是從 ArrayList 中刪除最后一個元素

[英]Jsf always remove last element from ArrayList

我在支持 bean 中有一個ArrayList ,他在 JSF 頁面中使用c:forEach渲染。 當我通過索引移除ArrayList元素時,jsf無論索引是什么,總是移除最后一個元素。 為什么會發生這種情況?

JSF 中的刪除按鈕是:

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

所以我使用立即屬性。 我認為問題是因為立即跳過了 JSF 生命周期中的應用請求階段。 有可能嗎?

如果是,那么在這種情況下如何運行 Apply 請求階段?

您是否在使用 Facelets(.xhtml 頁面)? 如果是這樣,您可能會對諸如<c:foreach>類的 JSTL 標記產生一些常見的誤解。 這是一篇關於它的好文章:

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

基本上, <c:foreach>僅在最初構建視圖時處理; 它不會成為組件樹的一部分,並且在更改后備集合時可能會有一些您不期望的行為。 您最好使用<ui:repeat>代替。

我遇到了類似的問題。 我正在使用 'tr:iterator' 迭代 ArrayList'<'Customer'>'(); 'ui:repeat' 解決了我的問題。 謝謝。

更多的代碼會有所幫助,但立即命令按鈕基本上用於導航離開當前頁面,因為動作偵聽器或動作將在應用請求階段執行,典型的情況是取消按鈕。 這意味着您不會在那里獲得更新的值。 如果您的邏輯依賴於其他一些 uiinput,請立即執行,您可以在 valuechangelistener 中掛鈎。

但我懷疑您想要實現的目標是否可以以更好的方式完成,請查看此鏈接@SO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM