設計時にではなく、実行時にELで使用されるマネージドBeanを指定する方法はありますか?たとえば
、コードが呼び出されるJSFページに応じactionListener="#{myBean.method}"
てmyBean
パーツの値が異なる場合があります(myBeanの代わりに使用されるオブジェクトが「メソッド」を実装する共通の親から派生していることを条件とします)。
質問する
1457 次
2 に答える
5
Beanスコープを事前に知っていて、Beanが事前に作成されている場合は、次の構文を使用できます。
actionListener="#{requestScope[beanName].method}"
ここで#{requestScope}
、はリクエストスコープマップを表し(ビュー、セッション、およびアプリケーションスコープで同じマップを使用できます)#{beanName}
、マネージドBean名を保持する変数を表します。
Beanスコープが事前にわからない場合、および/またはBeanが事前に作成されていない場合は、Application#evaluateExpressionGet()
次のように使用できるように、を実行するユーティリティEL関数を作成する必要があります。
actionListener="#{util:getBean(beanName).method}"
于 2012-08-28T13:07:23.007 に答える
0
質問が、共通の要素を持つ多数のサブクラスのページのセットを生成することに言及している場合は、ページ構成を使用してこれを実現することもできます。
たとえば、ResidentとNonResidentがPersonのサブクラスのマネージドBeanである場合:
例えば。'non-resident.xhtml'で
<ui:define name="body">
<ui:param name="Controller" value="#{NonResident}"/>
<ui:include src="anyone.xhtml"/>
</ui:define>
および「resident.xhtml」
<ui:define name="body">
<ui:param name="Controller" value="#{Resident}"/>
<ui:include src="anyone.xhtml"/>
</ui:define>
次に、「anyone.xhtml」は、Bean名に「Controller」を使用して共通要素を定義できます。
このアプローチにより、重複するページ定義を排除することもできます。
于 2013-10-20T13:54:59.697 に答える