使用PrimeFaces 5.3删除最后一个面板时,所有面板都会消失

时间:2016-06-15 11:16:54

标签: ajax jsf primefaces

请参阅下图。

image

这些图片展示了当前代码的工作原理。当我删除最后一个面板并按下更新按钮时,所有面板都会以某种方式消失。 当我对其他面板做同样的事情时,它运作良好。

如果有人知道如何解决这个问题,那将是一个很大的帮助。 提前谢谢。

我已经附上了以下代码(以防万一):

【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;
    }
}   

1 个答案:

答案 0 :(得分:0)

当您按下按钮时,面板&#39;可见性状态已提交。这绝对是一个PF错误,最后渲染的面板的状态会影响所有面板。

由于您似乎对跟踪可见性状态不感兴趣,最简单的解决方法是不处理面板,因此不会在服务器上存储可见性状态:

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