3 回答
TA贡献1831条经验 获得超10个赞
您可以<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}" />
因此请注意,这不会在请求范围内缓存评估值!每次都会对其进行重新评估。
千万不要使用<ui:param>。如果不使用来将参数传递给或中template定义的参数,从而实质上滥用了该参数,则该行为是未指定的,实际上,如果可能的话,这将是正在使用的JSF实现中的错误。永远不要依靠这一点。另请参见JSF2 Facelets中的JSTL ...有意义吗?<ui:composition><ui:decorate>
TA贡献1816条经验 获得超6个赞
像MVC中的任何视图一样,页面应尽可能简单。如果需要快捷方式,请将快捷方式放入控制器(the @ManagedBean或@Namedbean)中。
控制器:
@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}"
/>
TA贡献1776条经验 获得超12个赞
我以为ui:param仅提供要在模板中使用的变量,该模板利用了ui:composition。即使我不使用ui:composition,这是否也意味着我制作的每个jsf页面都是一个facelet
添加回答
举报