我的基本问题是“是否有对话的取消最大化的事件”,我知道我能为“最大化”的活动,但有关事件从全屏模式回到正在添加回正常尺寸后happeneds什么注册AJAX?”
面对现在的问题IM的描述:“当对话框来自全屏返回到正常模式,则滚动消失。”
文件的内容:
<p:dialog ... width="600" height="400" maximize="true">
<p:panel style="overflow:auto;">
<p:dataTable style="min-width:800px !important;">
....cols/data ~height~600px;
</p:dataTable>
</p:panel>
</p:dialog>
在.show()操作一切正常,同时对调整大小的动作在滚动正确的方式呈现。之后的一切行动最大化(回来到正常大小模式)分手。
Primefaces香港专业教育学院尝试和重现的问题都是我的项目版本3.5.RC1和最新的5.2。
假设,在最新版本的问题依然存在,我需要实施一些解决办法,但wasnt能够:(
对话状态的PrimeFaces文档,存在一个最小化,最大化和移动事件。
尝试使用
<p:ajax event="minimize" listener="#{bean.listener}" update="controls" />
对话:你的P内。
它是如何固定的:
Primefaces版本3.5.23和4.0.7和5.0.0已实施的变通不解析为取消最大化事件,因为它是不可能调用该事件仅在取消最大化。
变通涉及文件primefaces.js手动更改saveState和和对话的JavaScript restoreState。方法是彪保存和恢复对话的内容的宽度和高度。
最好的办法是端口解决方案从以上版本primefaces的精英版3.5。
我不知道,也没有检查primefaces <6但此后就没有需要的解决方法。您可以使用AJAX事件,如下列:
<p:dialog widgetVar="myDialog"
header="Dialog"
onShow="updateClientSide()"
modal="true" blockScroll="true" responsive="true"
closable="true" closeOnEscape="true" maximizable="true"
height="80vh" width="80vw" minHeight="300" minWidth="330">
<p:ajax event="maximize" update="{id's to update}" onstart="updateClientSide()" process="@none"/>
<p:ajax event="restoreMaximize" update="id's to update" onstart="updateClientSide()" process="@none"/>
<div>
content
</div>
</p:dialog>
...
<script type="text/javascript">
function updateClientSide() {
your client side stuff
};
</script>
请注意,给出的例子仅用于客户端回调,如果你想处理你需要一个侦听器添加到p服务器端的事情:AJAX标签,并更新了部分请求您需要的过程值。
问候