Here應提到的是在JSF應用程序中有多少個ELResolver與一個ELContext相關聯?
雖然僅單個ELResolver與一個相關聯的ELContext,有 通常被認爲對於任何給定的變量或 屬性分辨率多個解析器。
爲了讓接受者能夠理解,我在演示考慮到自定義的ELResolver。這僅用於說明目的。在我迄今爲止工作過的項目中,我還沒有覺得需要自制的定製ELResolver。
的CustomELResolver內部,getValue()
方法看起來像,
@Override
public Object getValue(ELContext ctx, Object base, Object property)
throws NullPointerException, PropertyNotFoundException, ELException {
logger.log(Level.INFO, "Get Value property : {0}", property);
if ((base == null) && property.equals(SOME_PROPERTY)) {
logger.log(Level.INFO, "Found request {0}", base);
ctx.setPropertyResolved(true);
return SOME_OBJECT;
}
return null;
}
每個值表達受的getValue 方法在幕後進行評價。在faces-config.xml中添加這個,自定義 解析器被添加到責任鏈中。
一個簡單的facelet頁:
<h:outputText value="#{bean.name}" />
<br />
<br />
<b>Ordered:</b>
<br />
<h:dataTable id="tableId1"
value="#{PROPERTY DECLARED IN CUSTOM RESOLVER CLASS}" var="t">
<h:column>#{t}</h:column>
</h:dataTable>
與
@ManagedBean(name = "bean")
@RequestScoped
public class Bean {
private String name = "Rafael";
// getters & setters
}
當調試,該表達value="#{PROPERTY DECLARED IN CUSTOM RESOLVER CLASS}"
從上述頁面,該呼叫委託給getValue()
在CompositeELResolver
,其中CustomELResolver以紅色突出顯示。
然而,對於這個表達式
value="#{bean.name}"
正常ManagedBeanELResolver
被考慮。絕對沒有問題。
但是對於相同的請求,ELContext
顯然與2 ELResolvers
相關聯。
請闡明,以什麼文檔中的第一段意味着上述
提到...一個ELResolver與一個ELContext相關...