Мой диалог типа «okCancel» не вызывает никаких событий на сервере при нажатии кнопки ok.Диалог ADF Faces - dialogListener не запускается
Кнопка отмены работает нормально, просто скрывая всплывающее окно.
Я использую Oracle ADF Faces 12.1.3 и JBoss шов 2.3 для инъекций компонентов.
Вот всплывающее окно и диалог код:
<af:form id="mainForm">
<af:panelStretchLayout id="psl1">
<!-- page layout -->
</af:panelStretchLayout>
<af:popup id="myPopup"
binding="#{bkBean.myPopup}"
contentDelivery="lazyUncached">
<af:dialog id="myDialog" closeIconVisible="true"
modal="true" okVisible="true" cancelVisible="true"
title="Import from server to #{bkBean.file.name}"
type="okCancel"
dialogListener="#{bkBean.doSomething}">
<af:panelFormLayout id="pfl1">
<!-- Several input text here -->
</af:panelFormLayout>
</af:dialog>
</af:popup>
</af:form>
Вот код для dialogListener. Я поставил точку отладки в заявлении, если:
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
@Name("exportImportServer")
@Scope(ScopeType.SESSION)
public class ExportImportServerBean implements Cleanable {
public void importFromServer(DialogEvent event) {
if (event.getOutcome() == DialogEvent.Outcome.ok) {
}
}
}
exportImportServer поддержка боб в рамках сеанса.
Если я переключаю точку останова в первой строке кода внутри метода импорта импортируемого компонента exportImportServer, он не останавливается внутри. Этот метод не вызван. Кажется, что ничего не происходит (даже у меня нет ошибок), за исключением того, что отправляется основная форма.
В режиме отладки после нажатия кнопки ok я могу остановиться внутри метода PhaseListener beforePhase(PhaseEvent phaseEvent)
. Но я действительно не знаю, следует ли вызывать метод поддержки bean bean после метода PhaseListener beforePhase(PhaseEvent phaseEvent)
.
Я ищу какой-либо намек на то, как я могу его отладить?
Есть ли какой-либо javascript, который называется, когда кнопка «ОК» нажата на диалог?
UPDATE: кажется, что проблема возникает из-за того, что всплывающее окно вызывается из области страницы и определенной в другой странице (на главную страницу, содержащую область), как показано в коде ниже:
Внутри main.xthml:
<af:document>
<af:form id="mainForm">
<af:panelStretchLayout id="psl1" topHeight="auto" bottomHeight="0">
<f:facet name="center">
<af:region id="myRegion" showHeader="never"
value="#{main.regionModel}" />
</f:facet>
</af:panelStretchLayout>
</af:form>
<af:popup id="myPopup"
binding="#{bkBean.myPopup}"
contentDelivery="lazyUncached">
<af:dialog id="myDialog" closeIconVisible="true"
modal="true" okVisible="true" cancelVisible="true"
title="Import from server to #{bkBean.file.name}"
type="okCancel"
dialogListener="#{bkBean.doSomething}">
<af:panelFormLayout id="pfl1">
<!-- Several input text here -->
</af:panelFormLayout>
</af:dialog>
</af:popup>
</af:document>
Внутри myRegion.xhtml:
<?xml version='1.0' encoding='UTF-8'?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:trh="http://myfaces.apache.org/trinidad/html"
xmlns:tr="http://myfaces.apache.org/trinidad"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<af:tree ...>
</af:tree>
<!-- Contextual Menu -->
<af:popup id="pp1" contentDelivery="lazyUncached">
<af:menu>
<af:commandMenuItem text="Do something" immediate="true"
rendered="#{bkBean2.isRendered}" icon="icon.png" actionListener="#{bkBean2.showMyPopup}" />
</af:menu>
</af:popup>
</ui:composition>
Это работает, если я определяю всплывающее окно внутри myRegion.xhtml, но не, если я определяю всплывающее окно внутри main.xhtml.
Благодарим вас за любые подсказки о том, как заставить его работать с всплывающим окном, определенным внутри main.xhtml?
Это ударил ваш метод при нажатии на отмену? – User404
Нет, нет. – jerome
Не следует ли использовать диалоговое окно «dialogListener =» # {ExportImportServerBean.importFromServer} ">' Может быть, это ошибка заклинания. Вы можете проверить, правильно ли вызывается метод, если вы нажмете «ctrl» и щелкните имя метода на странице jsff. Включает ли навигацию вас в метод? написано в вашем фасоли? –