是否有可以关闭primefaces覆盖面板的java命令?或者,当单击按钮时,是否有办法在覆盖面板内部使按钮关闭面板?
答案 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
似乎会刷新我需要的页面部分已更新。