変数を定義し、後でEL式で変数を再利用することは可能ですか?
例えば :
<h:inputText
value="#{myBean.data.something.very.long}"
rendered="#{myBean.data.something.very.long.showing}"
/>
私が考えているのは次のようなものです:
<!--
somehow define a variable here like :
myVar = #{myBean.data.something.very.long}
-->
<h:inputText
value="#{myVar}"
rendered="#{myVar.showing}"
/>
何か案は ?ありがとうございました !
これには <c:set>
を使用できます。
<c:set var="myVar" value="#{myBean.data.something.very.long}" scope="request" />
このEL式は一度評価され、リクエストスコープに保存されます。これは、 ビルド時間の表示 の間に値が使用可能な場合にのみ機能することに注意してください。そうでない場合は、scope
属性を削除して、それが真の「エイリアス」になるようにする必要があります。
<c:set var="myVar" value="#{myBean.data.something.very.long}" />
したがって、このはリクエストスコープ内の評価された値をキャッシュしないことに注意してください!毎回再評価されます。
Do[〜#〜] not [〜#〜]<ui:param>
を使用します。 <ui:composition>
または<ui:decorate>
で定義されているtemplate
にパラメーターを渡すために使用されていないため、本質的にそれを悪用した場合、動作は指定されず、実際には可能であれば、使用されているJSF実装のバグ。これに頼るべきではありません。 JSF2 FaceletsのJSTL ...理にかなっていますか?
MVCのすべてのビューと同様に、ページはできるだけシンプルにする必要があります。ショートカットが必要な場合は、ショートカットをcontroller(@ManagedBean
または@Named
Bean)。
コントローラ:
@Named
public MyBean
{
public Data getData()
{
return data;
}
public Foo getFooShortcut()
{
return data.getSomething().getVery().getLong();
]
}
見る:
<h:inputText
value="#{myBean.fooShortcut}"
rendered="#{myBean.fooShortcut.showing}"
/>