Я удалил тег 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.
заранее спасибо