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