与 p:dialog 相比,PrimeFaces 对话框框架会破坏视图范围吗?

2023-11-27

我正在使用 PrimeFaces 5。

我想在按下按钮时打开一个对话框。

<p:commandButton value="add upload" actionListener="#{theForm.openUpload}" >

public void openUpload() {
    this.item = new Item();
    RequestContext.getCurrentInstance().openDialog("uploadForm");
}

对话框中将有一个保存按钮来保存输入。

<h:commandButton value="#{text['button.add']}" id="add" styleClass="btn btn-default" actionListener="#{theForm.confirmAdd}"/>

public void confirmAdd() {
    RequestContext.getCurrentInstance().closeDialog("uploadForm");
}

我的托管 bean 是@ViewScoped。如果对话框位于外部文件中(如 PrimeFaces 对话框框架所做的那样),命令按钮是否会破坏视图范围?每当我单击“添加上传”按钮时,@PostConstruct方法被再次调用,就像范围丢失一样。

评论区的官方博客说它不会破坏视图范围,但是这里是论坛的核心开发者 says openDialog()创建一个新视图,因此它破坏了视图范围。

有人可以证实这一点吗?


PrimeFaces 的对话框架基本上显示了另一个视图<iframe>标签。我不会称之为破坏视图范围,但对话框视图将有它自己的范围,因为它实际上是一个不同的页面。在不同的情况下这可能是可取的,也可能不是可取的。正如 PrimeFaces 的用户指南所述:

对话框框架(DF)用于在a中打开外部xhtml页面 在运行时动态生成的对话框。

p:dialog

  • 存在于同一视图范围内。
  • 可以轻松地拥有相同的对话上下文。
  • 静态定义的对话框及其组件在视图构建时立即创建。您只能延迟渲染,例如与一个dynamic=true.
  • 声明性定义意味着它更具可读性和可维护性,因为对话框的存在没有隐藏在 java 代码中的某个地方。

对话框架

  • 有自己的视图范围。
  • 开发人员必须担心传递参数、传播对话上下文。 (而且PF不支持包含视图参数直到 5.1。)
  • 动态创建意味着对话框及其组件在对话框实际打开之前不会被创建,但每次打开时都会创建一个新对话框。如果多次打开对话框,总的性能损失将会更大,而且许多对话框视图可能会耗尽 JSF 视图限制并使其他视图过期。
  • 命令式动态创建在某些情况下可以提高资源效率。例如。根据用户输入显示数十个对话框中的一个特定对话框。或者一个很少使用的对话框,可以从应用程序的任何页面打开。

我的建议是默认使用 p:dialog。仅在像我在最后一个要点中提到的情况下才使用对话框框架。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与 p:dialog 相比,PrimeFaces 对话框框架会破坏视图范围吗? 的相关文章

随机推荐

  • 直接从字节数组裁剪图像

    我有一个字节数组 其中包含一个图像 我想将其保存为裁剪后的 我的工作方法是 获取字节 使用 BitmapFactory decodebytearray 将其转换为位图 使用 createbitmap sourceBitmap x1 y1 w
  • 在 SQL Server 2005 中创建新的数据库用户

    如何在sql server 2005中创建一个带有密码的新数据库用户 我需要在连接字符串中使用此用户 密码 例如 uid user pwd password CREATE LOGIN user WITH PASSWORD password
  • Python 将 Adblock 与 Selenium 和 Firefox Webdriver 结合使用

    我的目标是通过 Python 将 Adblock Plus 与 Selenium 结合使用 我已经能够将其加载到加载扩展程序的位置 但默认情况下它不包含默认过滤器 EasyList 这是我到目前为止所拥有的 from selenium im
  • 比较两个通用数字的值

    我想与两种类型的变量进行比较T extends Number 现在我想知道两个变量中哪个大于另一个或相等 不幸的是我还不知道确切的类型 我只知道它将是java lang Number 我怎样才能做到这一点 EDIT 我尝试了另一种解决方法T
  • 从 docker 注册表 v2 中删除镜像

    Docker Registry v2 有一个 API 端点来删除镜像 DELETE v2
  • 将 R 文件转换为缺少字符串值的 Stata

    我在将 R 文件转换为 Stata 格式时遇到错误 我能够将数字转换为 Stata 文件 但当我包含字符串时 出现以下错误 library foreign write dta newdata X dta Error in write dta
  • 有没有一种规范的方法可以从特定的原子命名空间中获取所有标识?

    说我有 user name and user gender作为原子模式安装 pprint d q find ident where e db ident ident db install attribute e d db conn 找到所有
  • 创建文件,但如果名称存在则添加编号

    Python 是否有任何内置功能可以在文件名已存在的情况下向其添加数字 我的想法是 它会像某些操作系统的工作方式一样工作 如果一个文件输出到已经存在该名称的文件的目录 它将附加一个数字或递增它 即 如果 file pdf 存在 它将创建 f
  • 使用jquery获取按钮点击时元素的id

    我有动态生成的按钮列表 并且 id 是在运行时生成的 如何使用 JQuery 获取单击按钮的 id 这是js代码 var btn
  • SQLite 和存储图像

    我想知道哪种方式更好地将图像存储在内存中 Storing images as BLOB in DB or 仅将图像保存到文件并存储path到数据库中 什么方式效率更高 我认为存储文件的路径需要更多操作 因为我们需要引用数据库 然后引用文件
  • 在哪里可以找到 Windows API 常量列表

    每次我与 user32 dll 等 dll 交互时 我都需要 MF REMOVE 等常量 是否有所有这些常量的概述或常量所有这些常量的 C 库 您将在 win32 API 的 C 标头中找到所有常量 获取此信息的低技术方法是简单地在 Vis
  • 为什么 `lein uberjar` 计算用 `def` 定义的变量?

    我试图在创建时理解 Lieningen 行为uberjar 以下是重现该行为的最小示例 ns my stuff core gen class def some var throw Exception boom defn main args
  • 如何避免 selenium webdriver 的套接字超时?

    我有一个复杂的 python selenium 测试套件来测试非公共网页 在该设置中 我需要获取网络驱动程序 如下所示 self driver webdriver Firefox firefox profile profile log pa
  • Final 类中的 Powermock 静态 Final 方法

    我正在编写的测试用例 public class AClassUnderTest This test class has a method call public Long methodUnderTest Uses the FinalUtil
  • 水晶报表打印空白页

    我有一个水晶报告 它正在打印空白页并打印报告 但只是带有这个附加页 完成我的研究 勾选 取消勾选并将正确的公式添加到 新页面之后 选项中 而不是最后一个记录公式等 但它仍然打印空白页 这是我的部分专家详细信息 报告标题 勾选 自由格式 灰色
  • 如何以编程方式登录 WordPress?

    我需要以编程方式在 WordPress 管理面板中执行一些操作 但无法管理如何使用 C 和 HttpWebRequest 登录 WordPress 这是我所做的 private void button1 Click object sende
  • PHP 中的多重继承

    我正在寻找一种好的 干净的方法来解决 PHP5 仍然不支持多重继承的事实 这是类层次结构 Message 短信 邀请短信 邮件留言 邀请邮件留言 两种类型的邀请 课程有很多共同点 我希望有一个共同的父类 Invitation 他们都可以继承
  • 如何通过NodeJS调用elasticsearch api?

    我的任务是对弹性搜索 api 进行 POST api 调用 https search test search fqa4l6ubylznt7is4d5yxlmbxy us west 2 es amazonaws com klove ddb r
  • python目录路径中的空格

    我是 Python 编码新手 但我遇到了一些谷歌搜索也无法帮助我解决的问题 我正在尝试编写一个简单的目录列表工具 但我似乎无法处理 OSX 中目录名称中的空格 我的代码如下 def listdir nohidden path import
  • 与 p:dialog 相比,PrimeFaces 对话框框架会破坏视图范围吗?

    我正在使用 PrimeFaces 5 我想在按下按钮时打开一个对话框