【问题标题】:All panels disappear when deleting the last panel with PrimeFaces 5.3使用 PrimeFaces 5.3 删除最后一个面板时,所有面板都会消失
【发布时间】:2023-03-24 22:45:01
【问题描述】:

请看下图。

image

这些图片显示了我当前的代码是如何工作的。当我删除最后一个面板并按下更新按钮时,所有面板都会以某种方式消失。 当我对其余面板执行相同操作时,它运行良好。

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

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

【xhtml】

      

我的信息

面板>

【托管豆】 包装样品;

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

【问题讨论】:

  • 当您单击命令按钮时,您会更新“@form”。这意味着调用 bean 的所有 getter。在执行更新之前,您没有调用 ajax 请求的过程来调用设置器
  • 感谢您的评论。正如您在答案中看到的那样,更新“@form”并不是真正的问题。放入“ process="@this" ”后,它按我的预期工作。

标签: ajax jsf primefaces


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您的帮助。按照您的说明修复代码后效果很好。但实际上我对跟踪可见性状态非常感兴趣,我只是删除了一些看起来并不是真正的资本问题的代码。我现在正试图看看当我使用固定代码跟踪时事情是如何工作的。我可能会再问你一个问题。
猜你喜欢
  • 1970-01-01
  • 2018-03-29
  • 1970-01-01
  • 2013-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 2018-10-02
相关资源
最近更新 更多