那不是JSTL,那是OGNL http://commons.apache.org/proper/commons-ognl/language-guide.html。当在 Struts 标签内时,
%{}
意味着您正在强制对表达式求值。大多数时候它是无用的,因为评估是自动的,但可以为了一致性而放置它,以明确评估正在进行的事实。
%{foo}
意味着您正在访问 ValueStack 中的 foo 对象(例如 Action 属性)。
%{#foo}
意味着您正在访问 foo 对象在动作上下文中 http://struts.apache.org/release/2.3.x/docs/ognl.html,但不在 ValueStack 中。
阅读更多内容这个很好的答案 https://stackoverflow.com/a/11620838/1654265.
${foo}
是JSP EL(表达式语言)。
JSTL 是一个不同的库并使用其专有标签 https://stackoverflow.com/a/19541951/1654265, like <c:forEach>
, <c:out />
, <c:when>
等等。
You can 混合 JSTL 和 OGNL https://stackoverflow.com/a/20467947/1654265, btw.
使用 Struts2 时,您通常使用 OGNL 和 Struts 标签(但如果您愿意,没有什么可以阻止您使用 JSTL)。使用 Spring MVC 时,您仅使用 JSTL。
处理 JSP 时总是可以使用 EL,但它有一些缺点 https://stackoverflow.com/a/23367430/1654265,并且需要使用 Struts2 进行一些调整。