2016-06-15 21 views
0

請參閱下圖。使用PrimeFaces刪除最後一個面板時,所有面板都會消失5.3

image

這些圖像顯示的東西如何與我當前的代碼工作。當我刪除最後一個面板並按下更新按鈕時,所有面板都會以某種方式消失。 當我對其他面板進行相同操作時,它運行良好。

如果有人知道如何解決這個問題,這將是一個很大的幫助。 在此先感謝。

我attatched下面的代碼(以防萬一):

【XHTML】

<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:p="http://primefaces.org/ui" 
     xmlns:ui="http://java.sun.com/jsf/facelets"> 
     <h:head></h:head> 
     <h:body> 
     <h:form> 
      <ui:repeat value="#{newapp001.list}" var="item" > 
      <p:panel header="#{item}" closable="true" > 
       <p>my information</p> 
      </p:panel> 
      </ui:repeat> 
      <p:commandButton value="Update" update="@form" /> 
     </h:form> 
     </h:body> 
    </html>

【ManagedBean】 包樣品;

import java.io.Serializable; 
import java.util.ArrayList; 
import java.util.List; 

import javax.enterprise.context.SessionScoped; 
import javax.inject.Named; 

@Named("newapp001") 
@SessionScoped 
public class NewApp001 implements Serializable 
{ 
    private static final long serialVersionUID = 2610647621325923945L; 

    private List<String> list; 

    public NewApp001() 
    { 
     this.list = new ArrayList<>(); 
     this.list.add("aaa"); 
     this.list.add("bbb"); 
     this.list.add("ccc"); 
     this.list.add("ddd"); 

     return; 
    } 

    public List<String> getList() 
    { 
     return this.list; 
    } 
} 
+0

當你點擊命令按鈕,你更新「@form」。這意味着調用你的bean的所有getter。在執行更新之前,您沒有調用ajax請求的進程來調用setter。 –

+0

謝謝您的評論。正如你在答案中看到的那樣,更新「@form」並不是一個真正的問題。把「process =」@ this「放到」之後,它按我的預期工作。 – Karen

回答

0

當您按下按鈕時,面板的可見性狀態被提交。這絕對是PF錯誤,最後呈現的面板狀態會影響所有面板。

既然你似乎不感興趣跟蹤可見性狀態,最簡單的解決將是不處理的面板,因此不能存儲在服務器上的可見性狀態:

<p:commandButton value="Update" process="@this" update="@form" /> 
+0

謝謝你的幫助。按照您的解釋修復代碼後,它運行良好。但實際上,我對跟蹤可見性狀態非常感興趣,我只是刪除了一些看起來不是首要問題的代碼。當我跟蹤固定代碼時,我現在試圖瞭解事情是如何工作的。我可能會問你另一個問題。 – Karen

相關問題