我有以下页面:
<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 修改了 getGameId 和 getHtmlPage 使用的 gameBean 变量。因此,我希望它首先执行,以便在刷新其他面板时,它们包含正确的数据。
请注意,此问题似乎仅发生在 gameDiv 元素中的调用(其他变量已正确刷新)。
您是否知道我可以做些什么来恢复 1. 和 2. 的顺序,以便第一个调用 changeGame() 方法?
我在 Tomcat 7.0 上使用 JavaServer Faces 2.0。
提前致谢