2016-05-19 4 views
0

Я пытался реализовать динамический уровень доступа пользователей, как указано в The earliest moment to visitTree() on fully built Component Tree?. Однако я не вижу полное дерево DOM при разборе. Во время разбора я могу видеть только дочерние элементы страниц шаблона. Что мне не хватает?JSF SystemListner и динамическая настройка авторизации пользователя

Фрагменты кода:

лицом config.xml

<system-event-listener> 
    <system-event-listener-class>com.xyz.listner.FieldDisableListener</system-event-listener-class> 
    <system-event-class>javax.faces.event.PostAddToViewEvent</system-event-class> 
    <source-class>javax.faces.component.UIViewRoot</source-class> 
</system-event-listener> 

JSF Page

<ui:composition template="/WEB-INF/templates/samplePage.xhtml"> 
<ui:param name="focusElement" value="frmWelcome:newProfileLink" /> 
<ui:define name="pageContents"> 
<h:form id="pendingsearchForm" styleClass="content-body"> 
<h:commandLink action="#{searchBean.release}" 
       id="searchcmdbtn" <<-- updated 
       value="Release" 
       immediate="true" 
       rendered="#{searchBean.resultFound}" > 
</h:commandLink> 

Слушатель Код

@Override 
public void processEvent(SystemEvent event) throws AbortProcessingException { 
UIViewRoot root = (UIViewRoot) event.getSource(); 
loadUserAccessConfig(); 
processViewTree(root); 
} 
@Override 
public boolean isListenerForSource(Object source) { 
if (source instanceof UIViewRoot) 
    return true; 
return false; 
} 
+0

Ваш вопрос сбивает с толку. «полное дерево DOM» невозможно. Он доступен только на стороне клиента (в JavaScript). Наверное, вы на самом деле имели в виду «полное дерево компонентов JSF». Ну, какие части точно отсутствуют? – BalusC

+0

Спасибо BalusC, да, я хочу иметь в виду «полное дерево компонентов JSF» ... как я уже упоминал, код работает нормально на целевой странице, но, перейдя на следующую страницу, нажав на некоторую гиперссылку, код не может проанализируйте все компоненты jsf. Обновленный код: sahaS

+0

Мы специально заинтересованы в "can not". Просьба уточнить технические вопросы. Если вы не можете выразить/уточнить правильную терминологию, просто опубликуйте MCVE. – BalusC

ответ

0

я сделал следующие изменения в моем JSF дерево синтаксического анализа логики, чтобы сделать мой код работы:

facesContext.getViewRoot().getFacetsAndChildren(); 
Смежные вопросы