Ответ 1
Он был помещен в область EL по умолчанию при создании дерева представлений (когда все атрибуты binding
- и атрибуты обработчиков тегов, таких как JSTL <c:xxx>
и JSF <f:xxx>
) оцениваются). Это проявляется обычными EL средствами при рендеринге дерева представлений. Оказание дерева просмотров происходит после построения дерева представлений, поэтому оно работает именно так. Это не значит, что этот код работает "по строкам", как вы ожидали от источника.
Я не могу указать вам одну ссылку, где она указана, поскольку ее нет. Вам нужно будет прочитать как EL spec и JSF spec отдельно и сделать 1 + 1 = 2.
Кстати, чтобы избежать путаницы среди новых разработчиков и избежать столкновений с существующими переменными в областях EL, вы можете использовать java.util.HashMap
в области запроса, которая в faces-config.xml
была объявлена следующим образом:
<managed-bean>
<description>Holder of all component bindings.</description>
<managed-bean-name>components</managed-bean-name>
<managed-bean-class>java.util.HashMap</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
и используется следующим образом
#{components.aaa.id}
<h:inputText id="txt1" binding="#{components.aaa}"/>
который более самодокументирован.