Метод бина, не вызываемый кнопкой JSF, если контент iFrame был перезагружен - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть тег iframe на моей странице JSF. Этот iframe отображает страницу аутентификации SSO.

Кроме того, на странице JSF у меня есть кнопка, которая просто вызывает (с помощью ajax) компонент поддержки.

Сценарий A (которыйработает): Пользователь загружает страницу JSF, может нажать на кнопку и вызывается метод компонента поддержки, также результаты видны в ap: outputPanel. В то же время содержимое iframe отображается и показывает форму авторизации SSO. Этот сценарий доказывает, что кнопка, Java-бин и отображение ajax приводят к работе outputPanel.

Сценарий B (который не работает): Пользователь загружает страницу JSF, но сначала регистрирует журналв форму авторизации SSO (в iframe), успешно. Родительская страница JSF не должна быть затронута, поскольку не было никаких изменений, внесенных в родительскую страницу dom, ни в набор cookie-файлов или что-либо еще (все происходило только в iframe). Тем не менее, когда пользователь теперь нажимает кнопку JSF (что обычно работаетв сценарии 1) выполняется вызов ajax, но метод компонента не вызывается. Также ответ ajax не содержит div и его содержимое, которое обычно заполняет outputPanel.

Что я сделал до сих пор: я честно поцарапал Интернет для чего-нибудь полезного, а также в локальной среде. Я проверил, что:

  1. Нет ошибок в журнале сервера при сценарии bслучается
  2. Ответ ajax для вызова кнопки в сценарии B равен 200 и имеет ожидаемый xml-тег частичного ответа, хотя java-метод не был вызван и поэтому частичный ответ не содержит обновления msgPanel.

После 2 дней борьбы с разными попытками мой мозг «выполнил переполнение стека», так как я не знаю, что делать с отладкой для этой проблемы. Главное, что меня пугает, это то, что все, что происходит в iFrame, не должно влиять на удобство использования кнопки, которая находится на родительской странице jsf.

Для справки вот простая страница JSF:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:fn="http://java.sun.com/jsp/jstl/functions">

<iframe id="ssoIframe" 
    src="https://sso?service=https://aLocalCallbackPage" 
    width="500px" height="280px">
</iframe>

<h:form id="placeholderForm">
    <p:commandButton id="ajaxBtn" value="Test Ajax call" 
            action="#{testSimpleBean.callAjax()}" global="true" />
</h:form>

<p:outputPanel autoUpdate="true">
        <p:growl showDetail="true" sticky="true" globalOnly="true" />
</p:outputPanel>

Пожалуйста, помогите с любыми идеями отладки.

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