Primefaces对话框更新机制

时间:2013-08-08 15:10:40

标签: java jsf-2 primefaces

我想知道应该使用哪种方法来更新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>

我应该何时使用哪种方法?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

来自VDL -

动态模式允许对话框在显示内容之前获取内容而不是页面加载,这对减少初始页面加载时间很有用。默认为false。

似乎第二个选项会在页面加载时获取其内容,然后在onclick上更新它。 为同样的结果做两次工作。