Here упоминаются, чтоСколько ELResolver [s] связано с ELContext в приложении JSF?
Хотя только один 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 ...