3 回答

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊
您可以<c:set>為此使用:
<c:set var="myVar" value="#{myBean.data.something.very.long}" scope="request" />
然后,該EL表達(dá)式將被評(píng)估一次并存儲(chǔ)在請(qǐng)求范圍內(nèi)。請(qǐng)注意,這僅在視圖構(gòu)建期間該值可用時(shí)才有效。如果不是這種情況,那么您需要?jiǎng)h除scope屬性,以使其成為真正的“別名”:
<c:set var="myVar" value="#{myBean.data.something.very.long}" />
因此請(qǐng)注意,這不會(huì)在請(qǐng)求范圍內(nèi)緩存評(píng)估值!每次都會(huì)對(duì)其進(jìn)行重新評(píng)估。
千萬(wàn)不要使用<ui:param>。如果不使用來(lái)將參數(shù)傳遞給或中template定義的參數(shù),從而實(shí)質(zhì)上濫用了該參數(shù),則該行為是未指定的,實(shí)際上,如果可能的話,這將是正在使用的JSF實(shí)現(xiàn)中的錯(cuò)誤。永遠(yuǎn)不要依靠這一點(diǎn)。另請(qǐng)參見(jiàn)JSF2 Facelets中的JSTL ...有意義嗎?<ui:composition><ui:decorate>

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊
像MVC中的任何視圖一樣,頁(yè)面應(yīng)盡可能簡(jiǎn)單。如果需要快捷方式,請(qǐng)將快捷方式放入控制器(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貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊
我以為ui:param僅提供要在模板中使用的變量,該模板利用了ui:composition。即使我不使用ui:composition,這是否也意味著我制作的每個(gè)jsf頁(yè)面都是一個(gè)facelet
添加回答
舉報(bào)