我正在使用PrimeFaces和JSF 2.0,我有这个布局:
<h:panelGroup layout="block" id="panelGroup" binding="#{bean.boundPg}" />
<p:commandButton value="Update" action="#{bean.updateMe}" update="panelGroup" />
其中,bean为SessionBean
。通过使用log4j进行调试,我发现在执行操作getBoundPg
之前绑定过程调用了updateMe
。因此,视图总是过时的。
你知道为什么以及如何扭转这个顺序吗?谢谢!
-------------编辑---------------
我正在制作一个测验游戏的网络应用程序。
<h:panelGroup layout="block" id="pgContents" binding="#{bean.boundContents}" />
<p:commandButton value="Prev page" action="#{bean.prevPage}" update="pgContents" />
<p:commandButton value="Next page" action="#{bean.nextPage}" update="pgContents" />
pgContents
包含许多h:pannelGroup
个,每个子组包含一个显示测验内容的标签,一个h:inputText
供玩家提供答案。由于某些原因,我不得不以编程方式生成pgContents
个孩子。
Prev page
和Next page
按钮将检索上一组/下一组测验
下面是bean(跳过getter&amp; setters)
@ManagedBean(name = "bean")
@SessionScoped
public class LessonHelper {
private int currentPage;
private HtmlPanelGroup boundContents;
public void prevPage() {
// decrease currentPage
// fetch contents
// add children for boundContents (label, inputText)
}
// nextPage() is similar
}
我的问题是,当我单击上一个/下一个按钮时,在绑定过程中首先调用getter getBoundContents
,稍后调用prevPage()/nextPage()
,这会导致内容始终不在-date。
答案 0 :(得分:1)
因为这是自然的方式,正如你在BalusC的这篇精彩教程中所看到的那样:http://balusc.blogspot.com/2006/09/debug-jsf-lifecycle.html
告诉我你想做什么,展示那个bean里面的内容,找到你问题的解决方案!