You can use <c:set>
for this:
<c:set var="myVar" value="#{myBean.data.something.very.long}" scope="request" />
This EL expression will then be evaluated once and stored in the request scope. Note that this works only when the value is available during view build time. If that's not the case, then you'd need to remove the scope
attribtue so that it becomes a true "alias":
<c:set var="myVar" value="#{myBean.data.something.very.long}" />
Note thus that this does not cache the evaluated value in the request scope! It will be re-evaluated everytime.
Do NOT use <ui:param>
. When not used in order to pass a parameter to the template
as defined in <ui:composition>
or <ui:decorate>
, and thus in essence abusing it, then the behavior is unspecified and in fact it would be a bug in the JSF implementation being used if it were possible. This should never be relied upon. See also JSTL in JSF2 Facelets... makes sense?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…