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;
}
ご質問は混乱しています。 "完全なDOMツリー"はそこでは不可能です。クライアントサイドでのみ利用可能です(JavaScriptで)。私はあなたが実際には "完全なJSFコンポーネントツリー"を意味すると思います。さて、どの部分が欠けていますか? – BalusC
ありがとうBalusC、はい、私は "完全なJSFコンポーネントツリー"を意味する...私が言及したように、コードはリンク先ページでうまくいきますが、次のページにいくつかのハイパーリンクをクリックすると、すべてのjsfコンポーネントを解析します。更新されたコード: 即時= "true" レンダリング= "#{searchBean.resultFound}"> h :commandLink> – sahaS
私たちは特に「できません」に興味があります。テクニカルで詳しく説明してください。正確な用語を表現/精緻化できない場合は、MCVEを投稿するだけです。 \tます。private void processViewTree(のUIComponentコンポーネント){のため \t \t: – BalusC