Я удалил тег f: дословно, и теперь он работает правильно. Я до сих пор не понимаю, почему это вызвало такое поведение.

я есть следующая страница:

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

<h:panelGroup id="gameDiv">
    <f:verbatim>
        <iframe src="/levelup/resources/games/#{gameBean.gameId}/#{gameBean.htmlPage}"  width="700px" height="800px" frameborder="0"/>
    </f:verbatim>
</h:panelGroup>

Когда я нажимаю на кнопку «gameSelector», происходит последовательность событий: 1. gameBean.getGameId и gameBean.getHtmlPage называются 2. gameBean.changeGame называется 3. Страница обновляется.

Мои проблемы лежат в порядке 1. и 2. changeGame изменяет переменную gameBean, которая используется getGameId и getHtmlPage. Поэтому я хочу, чтобы он сначала выполнялся, чтобы при обновлении других панелей они содержали правильные данные.

Обратите внимание, что эта проблема, по-видимому, возникает только для вызова внутри элемента gameDiv (другие переменные правильно обновлены).

Можете ли вы представить, что я мог бы сделать, чтобы изменить порядок 1. и 2., чтобы метод changeGame () вызывался первым?

Я использую JavaServer Faces 2.0 на Tomcat 7.0.

заранее спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос