Ответ 1
-
${}
- стандартная запись JSP EL. -
#{}
- стандартная нотация UEL; никогда не использовал его, может работать. -
%{}
- обозначение выражения OGNL.
JSP EL-нотация работает, потому что есть оболочка запроса, которая сначала переносит на стек значений для поиска, а затем возвращается к нормальной оценке JSP, если в стеке значений нет значения.
Обозначение выражения OGNL допустимо только в тегах S2. IMO он должен использоваться всякий раз, когда вы оцениваете выражение OGNL, хотя это довольно часто необязательно. Однако, если это необязательно, это, скорее, дерьмовая стрельба. Это часто, buuuut не всегда. Лучше всего использовать его и быть явным и коммуникативным.
Возможно, вы спрашиваете о переменных #
, таких как #session
и т.д. #
используется для разрешения значения в стеке значений, которое находится в разделе "карта". Я рассматриваю стек значений как стек комбинации и область действия: если объект был нажат на стек, вам не нужен #
. Если значение было создано, вам понадобится #
.
Например, если вы используете <s:set>
для создания переменной, вы должны получить к ней доступ с помощью префикса #
, например:
<s:set var="foo" value="'plugh'"/>
<s:property value="#foo"/>