2016-05-19 1 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ページ

<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コンポーネントを解析します。更新されたコード: 即時= "true" レンダリング= "#{searchBean.resultFound}"> sahaS

+0

私たちは特に「できません」に興味があります。テクニカルで詳しく説明してください。正確な用語を表現/精緻化できない場合は、MCVEを投稿するだけです。 \tます。private void processViewTree(のUIComponentコンポーネント){のため \t \t: – BalusC

答えて

0

は、私は私のコードを機能させるために、私のJSFツリー解析ロジックで次のように変更しました:

facesContext.getViewRoot().getFacetsAndChildren(); 
関連する問題