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)
我有同样的问题.更新对话框使其消失并重新出现(并忘记其位置).
为了解决这个问题,我在对话框内容周围创建了一个包装器标签.
<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 次 |
| 最近记录: |