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>