我想知道应该使用哪种方法来更新Primefaces中的Dialog。 这两个实现是否相同吗?
第一种方法:在对话框中使用动态属性
<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>
第二种方法:通过commandButton手动更新对话框
<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>
我应该何时使用哪种方法?
答案 0 :(得分:1)
如果根本没有加载对话框,则两种方法都有相同的结果。 第一种方法尝试弹出对话框,但意识到尚未加载内容。因此,内容将从相应的bean中获取。 第二种方法在从bean加载内容后打开对话框。
对话框打开至少一次后会出现差异: 如果在第二次,第三次,第四次,......第n次打开对话框,第一种方法将弹出对话框,因为内容已经是第一次加载。 第二种方法将确保在对话框打开时内容始终是最新的。
答案 1 :(得分:0)
来自VDL -
动态模式允许对话框在显示内容之前获取内容而不是页面加载,这对减少初始页面加载时间很有用。默认为false。
似乎第二个选项会在页面加载时获取其内容,然后在onclick上更新它。 为同样的结果做两次工作。