Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf Primefaces如何更新对话框中的内容并保持对话框居中?_Jsf_Jsf 2_Primefaces - Fatal编程技术网

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

Jsf Primefaces如何更新对话框中的内容并保持对话框居中?,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我有一个对话框,页面加载时不包含任何内容,我正在根据用户单击的链接动态设置对话框的内容 <p:dialog widgetVar="dlg" modal="true" id="dialog"> <p:panel id="fullArticle"> <h:outputText value="#{content.newsArticle}" escape="false" /> </p:panel> </p:dialo

我有一个对话框,页面加载时不包含任何内容,我正在根据用户单击的链接动态设置对话框的内容

<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>

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


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

在ajax请求之前执行
onclick
。您需要在
oncomplete
中打开对话框。这将在ajax请求和更新之后执行。默认情况下,
是隐藏的,除非其
可见
属性的计算结果为

<p:commandLink value="Read more" actionListener="#{content.getFullArticle}" 
    update=":dialog" oncomplete="dlg.show()">
我也有同样的问题。 更新对话框会使其消失并重新出现(并忘记其位置)

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

<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>


我运行的是tomcat 6,它不支持EL 2.2,是吗?哦,它不支持。但是你可以安装JBoss EL来实现这一点:服务器人员不会在这里购买。我必须坚持使用attribute/actionlistener。不过还是谢谢你的建议。那就糟了。即使只是在webapp自己的
/WEB-INF/lib
?无论如何,没问题,欢迎您:)为什么在
update=“:dialog”
中有
,而不是只说
update=“dialog”
而没有
<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>