请求范围的bean从所有其他请求bean中收集数据&商业逻辑。这个bean是通过页面中的EL表达式使用的,但是在这个请求scoped bean可以在页面中使用之前,它需要使用收集的数据构建一个目录(这是在所有集合结束之后但在bean属性可能之前完成的。用于页面)。
如何在所有集合之后但在通过页面中的EL表达式而不使用<f:event>
的情况下使用该bean之前,执行此目录的构建?我只需要构建一次。
@ManagedBean(name="namesDirectory")
@RequestScoped
public class NamesDirectory {
public void addForPersonNameRetrieval(Integer id) { // this is used to collect the data in bean
peopleNamesMap.put(id,null);
.......
}
public void buildDirectory(){ // used, when all collection is over, to build the diirectory
.......
}
public String getPersonName(Integer id) { // used in the JSF page through EL expressions
name = peopleNamesMap.get(id);
}
}
此处buildDirectory()
需要在所有集合结束时执行,但需要在JSF页面中使用getPersonName()
之前执行
答案 0 :(得分:2)
你有几种选择。您可以在每次插入后或每次检索之前重建目录,但这可能会导致不必要的重建。您只能在需要时重建目录并调用:
requiresRebuild
并将其默认为true
。true
中将其设置为addForPersonaNameRetrieval
。false
中将其设置为buildDirectory
。buildDirectory
中致电getPersonName
。