JSF - атрибут iFrame src не соответствует отображению HTML - PullRequest
2 голосов
/ 22 декабря 2010

У меня есть iFrame на моей странице, выглядящий так:

<h:panelGroup id="gameDiv">
    <f:verbatim>
        <iframe src="/levelup/resources/#{cc.attrs.src_dir}/#{cc.attrs.src_html}"     width="700px" height="800px" frameborder="0" id="gameFrame">
         </iframe>
    </f:verbatim>
</h:panelGroup>

По сути, переменная "src" связана с использованием JSF 2.0 EL и получает свое значение от компонента поддержки.

Затем я использую форму, чтобы обновить это значение и обновить всю страницу. В отображаемом HTML я вижу, что «src» для моего div был обновлен. Однако на странице HTML все еще отображается старая.

Я думал, что проблема была похожа на 2 фреймов с одинаковым дисплеем, даже если src отличается , и я попробовал решения, которые были упомянуты (использование временной метки, чтобы сделать src уникальным, или сброс настроек их "о: пусто" на каждой странице загрузки). Однако ни один из них не работал.

Для информации, форма, которая обновляет компонент поддержки:

<h:form id="gameSelectionForm">
    <h:selectOneMenu id="gameSelection">
        <f:selectItems value="#{gameBean.gameIds}" />
    </h:selectOneMenu>
    <p:commandButton id="gameSelector" action="#{gameBean.changeGame}" update="gameScoreFieldset, gameDiv" />
</h:form>

Любая подсказка была бы очень полезна.

Заранее спасибо,
Себастьен

1 Ответ

3 голосов
/ 24 декабря 2010

Вы изменяете src из iframe с помощью JS / Ajax, но не перезагружаете его содержимое.

Есть два способа исправить это:

  • Только не используйте JS / ajax.Синхронный HTTP-запрос перезагрузит весь документ и, таким образом, автоматически перезагрузит iframe.

    <p:commandButton ajax="false" />
    
  • Используйте JS для принудительной перезагрузки.Добавьте следующее после <iframe>.

    <script>document.getElementById('gameFrame').location.reload()</script>
    

О, вам определенно необходимо удалить <f:verbatim>,Начиная с JSF 1.2 этот тег совершенно бесполезен .

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