Jsf 是否有java命令可以关闭primefaces覆盖面板?

Jsf 是否有java命令可以关闭primefaces覆盖面板?,jsf,primefaces,Jsf,Primefaces,是否有java命令可以关闭primefaces覆盖面板?或者有没有一种方法可以让覆盖面板内的按钮在单击按钮时关闭面板?类似的东西怎么样(我还没有测试过) 仅客户端解决方案 <p:commandButton id="basic" onclick="jQuery('#IdOfThePanel').hide()"></p:commandButton> 在这里看一下如何从java执行js p、 s也许你需要添加一些前缀,比如formID:IdOfThePanel,而不是IdO

是否有java命令可以关闭primefaces覆盖面板?或者有没有一种方法可以让覆盖面板内的按钮在单击按钮时关闭面板?

类似的东西怎么样(我还没有测试过)

仅客户端解决方案

<p:commandButton id="basic" onclick="jQuery('#IdOfThePanel').hide()"></p:commandButton>
在这里看一下如何从java执行js

p、 s也许你需要添加一些前缀,比如formID:IdOfThePanel,而不是IdOfThePanel。。。取决于你的情况


编辑:不要使用
jQuery(“#IdOfThePanel”).hide()
只需使用
panelWidgetVar.hide()
或在更新的PrimeFaces版本中,
PF('panelWidgetVar').hide()

将其放入p:overlypanel标记中,并设置p:effect'对于具有overlypanel id的attrib,使用appendToBody=true

 <p:commandLink styleClass="ui-icon ui-icon-triangle-1-e">
        <p:effect type="slide"  for="idOverlayPanel" event="click">
            <f:param name="mode" value="'hide'"/>
            <f:param name="direction" value="'right'"/>
        </p:effect>
    </p:commandLink>

无影响参数

<p:commandLink styleClass="ui-icon ui-icon-close" >
    <p:effect type="slide"  for="idOverlayPanel" event="click"/>
</p:commandLink>

您也可以将幻灯片效果更改为另一个图标样式类


对不起,我的英语不好

你可以简单地在覆盖面板上添加一个按钮来关闭它

<p:overlayPanel widgetVar="myOverlayPanel" ... >
  <p:commandButton ... onComplete="PF('myOverlayPanel').hide(); ... />
</p:overlayPanel>

我已经用jQuery和css完成了这项工作。请检查下面的代码

<p:overlayPanel widgetVar="overlay" showEffect="blind" showCloseIcon="true" styleClass="lane-overlay" dynamic="true" dismissable="true" hideEffect="blind">
<script>
$(document).ready(function(){
$(".closeIcon").click(function(){
$(".lane-overlay").hide();
});
});
</script>
<p:commandButton value="close"  styleClass="closeIcon"/>
`enter code here`

$(文档).ready(函数(){
$(“.closeIcon”)。单击(函数(){
$(“.lane overlay”).hide();
});
});
`在这里输入代码`
我发现(至少在PrimeFaces 7.0中)仅更新表单或覆盖面板外部任何组件的
p:commandButton
将关闭覆盖面板。比如说,

<p:commandButton value="Close" update="myform" />


我唯一担心的是,我找不到具体解释这一点或为什么会发生这种情况的文档,所以我对依赖它有点犹豫。另一方面,它似乎比
onclick=“PF('panelWidgetVar').hide();“
”更干净,后者倾向于清空我的浏览器窗口并重新绘制整个页面,而
update
似乎只刷新我需要更新的页面部分。

overlypanelwidgetvar.hide()这个解决方案在PF 6.2中对我有效,只是我必须使用
onclick
事件而不是
onComplete
private void doSomething() {
  RequestContext ctx = RequestContext.getCurrentInstance();
  ctx.execute("PF('myOverlayPanel').hide();");
} 
<p:overlayPanel widgetVar="overlay" showEffect="blind" showCloseIcon="true" styleClass="lane-overlay" dynamic="true" dismissable="true" hideEffect="blind">
<script>
$(document).ready(function(){
$(".closeIcon").click(function(){
$(".lane-overlay").hide();
});
});
</script>
<p:commandButton value="close"  styleClass="closeIcon"/>
`enter code here`
<p:commandButton value="Close" update="myform" />