Primefaces如何更新对话框中的内容并保持对话框居中?

Cat*_*ish 18 jsf primefaces jsf-2

我有一个对话框,其中不包含页面加载的内容,我根据用户点击的链接动态设置对话框的内容.

<p:dialog widgetVar="dlg" modal="true" id="dialog">
    <p:panel id="fullArticle">
        <h:outputText value="#{content.newsArticle}" escape="false" />
    </p:panel>
 </p:dialog>
...
...
<p:commandLink value="Read more" actionListener="#{content.getFullArticle}" onclick='dlg.show();' update=":fullArticle">
    <f:attribute name="contentId" value="#{news.contentId}" />
</p:commandLink>
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,当您单击"阅读更多"链接时,它会显示对话框,但对话框不在页面的中心.如果我将commandLink上的udpate属性更改为update=":dialog",则对话框会闪烁,就好像它正在打开然后立即关闭一样.

如何更新对话框并使其以动态内容为中心?

Bal*_*usC 38

onclick被执行之前的AJAX请求.您需要打开对话框oncomplete.这将在ajax请求和更新之后执行.该<p:dialog>默认是隐藏的,除非它是即visible属性评估true.

<p:commandLink value="Read more" actionListener="#{content.getFullArticle}" 
    update=":dialog" oncomplete="dlg.show()">
Run Code Online (Sandbox Code Playgroud)

具体问题无关,您是否意识到自从EL 2.2以来您可以将完全对象作为方法参数传递?这使得<f:attribute>actionListener"黑客"是多余的:

<p:commandLink value="Read more" action="#{content.getFullArticle(news)}" 
    update=":dialog" oncomplete="dlg.show()" />
Run Code Online (Sandbox Code Playgroud)


Luí*_*res 6

我有同样的问题.更新对话框使其消失并重新出现(并忘记其位置).

为了解决这个问题,我在对话框内容周围创建了一个包装器标签.

<p:commandLink update=":playerViewDialogHeader,:playerViewDialogContent"
               oncomplete='playerViewDialogJS.show()' value='#{item.name}' />


<p:dialog id='playerViewDialog' widgetVar='playerViewDialogJS'>

   <f:facet name="header">
      <h:outputText id="playerViewDialogHeader" value="#{playerController.objectView.name}" />
   </f:facet>

   <h:form id='playerViewDialogContent'>
      <!-- CONTENT GOES HERE -->
   </h:form>

</p:dialog>
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

62775 次

最近记录:

9 年,1 月 前