我正在从渲染属性调用一个方法,我注意到该方法在 RENDER_RESPONSE 阶段被多次触发。
还注意到该方法在其他阶段(APPLY_REQUEST_VALUES、PROCESS_VALIDATIONS 等)也被多次触发。
我看到了一个相关的查询(为什么 getter 被渲染属性调用了这么多次?),其中告诉了这些调用背后的原因。
有没有一种方法可以控制这一点,以便该方法只被调用一次。
我的用法
<rich:panelMenuItem label="Menu1" actionListener="#{testMenuMB.panelMenuClickedAjax}" rendered="#{testMenuMB.checkForRendering('RoleA,RoleB')}"></rich:panelMenuItem>
public boolean checkForRendering(String rolesString){
System.out.println("Roles-->"+rolesString+FacesContext.getCurrentInstance().getCurrentPhaseId());
boolean authorized = false;
String [] rolesArray = rolesString.split(",");
for (String string : rolesArray) {
if(string!=null && accesibleRolesMap.containsKey(string)){
authorized = true;
break;
}
}
return authorized;
}