在可以在JSF页面中使用之前执行bean的方法

时间:2011-11-27 05:16:05

标签: jsf jsf-2

请求范围的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()之前执行

1 个答案:

答案 0 :(得分:2)

你有几种选择。您可以在每次插入后或每次检索之前重建目录,但这可能会导致不必要的重建。您只能在需要时重建目录并调用:

  • 添加标记requiresRebuild并将其默认为true
  • true中将其设置为addForPersonaNameRetrieval
  • false中将其设置为buildDirectory
  • 如果需要重建,请在buildDirectory中致电getPersonName