java - Primefaces 对话框更新机制

标签 java jsf-2 primefaces

我想知道应该使用哪种方法来更新 Primefaces 中的对话框。 这两个实现等效吗?

第一种方法:在对话框中使用动态属性

<h:form>
    <p:commandButton onclick="dialog.show();"/>
</h:form>

<p:dialog widgetVar="dialog" dynamic="true">
    <h:form id="dialogForm">
        <h:outputText value="#{bean.name}"/>
    </h:form> 
</p:dialog>

第二种方法:通过命令按钮手动更新对话框

<h:form>
    <p:commandButton onclick="dialog.show();" update="dialogForm"/>
</h:form>

<p:dialog id="dialog" widgetVar="dialog">
    <h:form id="dialogForm">
        <h:outputText value="#{bean.name}"/>
    </h:form>
</p:dialog>

什么时候应该使用哪种方法?

最佳答案

如果对话框根本没有加载,两种方法都有相同的结果。 第一种方法尝试弹出对话框,但意识到内容尚未加载。因此将从相应的 bean 中获取内容。 第二种方法在从 bean 加载内容后打开对话框。

对话框至少打开一次后就会出现差异: 如果您第二次、第三次、第四次......第n次打开对话框,第一种方法只会弹出对话框,因为内容已经第一次加载。 第二种方法将确保对话框打开时内容始终是最新的。

关于java - Primefaces 对话框更新机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18129652/

相关文章:

java - 使用 Eclipse 编译和重新创建 JAR 文件时遇到问题

hibernate - tomcat 重新启动 => 找不到 SessionFactory [uuid=...,name=null]

javascript - 如何修改一组p :selectBooleanCheckboxes with the same class using jQuery?

java - 运行在两个不同 JVM 上的两个应用程序如何交互?

java - 计算 "nice"在 JSplitPane 中查找分隔符的位置

Jsf 重定向到新窗口

jsf - 当实现延迟加载时,行选择在 primefaces (5.3) 数据表中不起作用,但在没有延迟加载的情况下也可以工作

javascript - 使用 jQuery 将 html 代码插入 Primefaces 对话框

java - 没有名为persistence.xml的EntityManager的持久性提供程序

javascript - f :ajax causes model to not getting updated 上的事件