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

时间:2012-03-22 14:00:41

标签: jsf primefaces

是否有可以关闭primefaces覆盖面板的java命令?或者,当单击按钮时,是否有办法在覆盖面板内部使按钮关闭面板?

5 个答案:

答案 0 :(得分:5)

您可以轻松地在overlaypanel上添加一个按钮来关闭它,例如

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

您也可以在Java中执行此操作

private void doSomething() {
  RequestContext ctx = RequestContext.getCurrentInstance();
  ctx.execute("PF('myOverlayPanel').hide();");
} 

答案 1 :(得分:0)

如何(没有测试过自己)

仅客户端解决方案

<p:commandButton id="basic" onclick="jQuery('#IdOfThePanel').hide()"></p:commandButton>

或客户端+服务器端

JSF:

<p:commandButton value="Save" actionListener="#{myBean.doSomething}"/>

的java:

public void doSomething(ActionEvent actionEvent) {

    RequestContext context = RequestContext.getCurrentInstance();
    context.execute("jQuery('#IdOfThePanel').hide()");
}

看一下从java执行js

Executing Javascript from Server Side

p.s也许代替IdOfThePanel你必须添加一些像formID这样的前缀:IdOfThePanel ......取决于你的情况......

修改:而不是jQuery('#IdOfThePanel').hide()只使用panelWidgetVar.hide()或更新的PrimeFaces版本,PF('panelWidgetVar').hide()

答案 2 :(得分:0)

将其置于p:overlayPanel标记内并设置p:effect&#39; for&#39; attrib with overlayPanel id,使用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>

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

抱歉我的英文不好

答案 3 :(得分:0)

我用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`

答案 4 :(得分:0)

我发现(至少在PrimeFaces 7.0中)仅更新表单或overlayPanel外部任何组件的p:commandButton会关闭overlayPanel。例如,

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

我唯一担心的是,我找不到能具体说明该现象或原因的文档,因此我有点犹豫要依赖它。另一方面,它似乎比onclick="PF('panelWidgetVar').hide();"做得更干净,这往往会清空浏览器窗口并重绘整个页面,而仅update似乎会刷新我需要的页面部分已更新。