Есть ли команда Java, которая может закрыть панель наложения простых лиц? - PullRequest
2 голосов
/ 22 марта 2012

Есть ли команда java, которая может закрыть панель наложения простых лиц? Или есть способ заставить кнопку внутри наложенной панели закрыть панель при нажатии кнопки?

Ответы [ 5 ]

5 голосов
/ 20 ноября 2015

Вы можете легко добавить кнопку на вашу оверлейную панель, чтобы закрыть ее, например,

<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();");
} 
0 голосов
/ 26 апреля 2019

Я обнаружил, что (по крайней мере в PrimeFaces 7.0) p:commandButton, который просто обновляет форму или любой компонент вне overlayPanel, закроет overlayPanel. Например,

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

Мое единственное беспокойство заключается в том, что я не могу найти документацию, которая конкретно объясняет это или почему это происходит, поэтому я немного сомневаюсь, чтобы зависеть от этого. С другой стороны, кажется, что он работает чище, чем onclick="PF('panelWidgetVar').hide();", что приводит к очистке окна моего браузера и перерисовыванию всей страницы, тогда как только update, кажется, обновляет только те части страницы, которые мне нужно обновить.

0 голосов
/ 09 августа 2016

Я сделал это с помощью 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`
0 голосов
/ 12 августа 2013

Поместите это в тег p: overlayPanel и установите атрибут p: effect 'for' с идентификатором overlayPanel, используйте 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>

Вы можете поменять слайд-эффект на другой, класс стиля иконок.

Извините за мой плохой английский

0 голосов
/ 22 марта 2012

как насчет чего-то вроде (не проверял себя)

решение только на стороне клиента

<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()");
}

посмотрите здесь на выполнение js из Java

Выполнение Javascript со стороны сервера

p.s возможно, вместо IdOfThePanel вам придется добавить префикс, например formID: IdOfThePanel ... зависит от вашего случая ...

Редактировать: вместо jQuery('#IdOfThePanel').hide() просто используйте panelWidgetVar.hide() или в более поздних версиях PrimeFaces, PF('panelWidgetVar').hide()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...