在JSF页面中定义和重用ELvariables
是否可以在ELexpression式中定义variables并重新使用variables?
例如 :
<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>
来实现这个function:
<c:set var="myVar" value="#{myBean.data.something.very.long}" scope="request" />
这个ELexpression式将被评估一次并存储在请求范围中。 请注意,只有在视图构build时间内该值可用时,此function才有效。 如果情况并非如此,那么你需要删除scope
属性,以便它成为一个真正的“别名”:
<c:set var="myVar" value="#{myBean.data.something.very.long}" />
请注意,这不会caching请求范围中的评估值! 每次都会重新评估。
像MVC中的任何视图一样,页面应该尽可能简单。 如果你想要一个快捷方式,把快捷方式放入控制器 ( @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}" />