1
我正在從呈現屬性調用方法,其中我注意到該方法在RENDER_RESPONSE階段中被多次觸發。如果從渲染屬性調用多次調用方法
人們還注意到,該方法是在其他階段trigered多次(APPLY_REQUEST_VALUES,PROCESS_VALIDATIONS等)也。
我看到這裏這些呼叫背後的原因,被告知相關查詢(Why is the getter called so many times by the rendered attribute?)。
有沒有一種方法,我們可以控制這一點,因此,該方法被調用一次。
我使用
<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;
}