取消最大化的Primefaces对话框事件



我的基本问题是"是否存在取消对话框最大化的事件",我知道我可以为"最大化"事件注册ajax,但从全屏模式恢复到正常大小后发生的事件呢?">

我现在面临的问题描述:当对话框从全屏模式返回到正常模式时,滚动消失

文件内容:

<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((操作中,一切看起来都很好,在调整大小操作中,滚动条也以正确的方式呈现。在UNmaximum操作(混合回正常大小模式(后,所有东西都会破裂。

Primefaces我尝试并复制了我的项目3.5.RC1版本和最新的5.2版本。

假设在最新版本中问题仍然存在,我需要实现一些变通方法,但无法:(

对话框的PrimeFaces文档声明存在最小化最大化移动事件。

尝试使用

<p:ajax event="minimize" listener="#{bean.listener}" update="controls" />

在您的p:对话框中。

如何修复:

Primefaces版本3.5.23、4.0.7和5.0.0已经实现了不解决未最大化事件的方法,因为不可能仅在未最大化时调用该事件。

解决方法包括手动更改文件primefaces.js中Dialog javascript的saveState和restoreState。方法是保存和恢复对话框内容的宽度和高度。

最好的方法是将解决方案从高级版本或精英版本移植到3.5。

我不知道,也没有检查素数面<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标记添加一个侦听器,并根据需要更新部分请求的进程值。

关于

编辑:请提及Kukeltje关于在primefaces扩展框架的帮助下执行纯客户端回调的评论。通过使用pe:javascript库标签,仍然可以使用给定的primefaces组件提供的事件,但到服务器端的循环被完全跳过。

相关内容

  • 没有找到相关文章

最新更新