我目前正在Struts2的工作,我只是不明白有什么区别之间${var},#{var}和%{var}他们是不同的范围?他们 是 什么
${var}
#{var}
%{var}
我找到了#的示例:
<s:select label="Year" id="%{param.name}" list="#{'2010':'2010','2011':'2011','2012':'2012','2013':'2013','2014':'2014', '2015':'2015'}" value="%{currentYear}" required="true" />
在这里,它看起来像是一个关联数组,但是还有几次我将其视为#var(没有括号)任何想法?
#var
${}
#{}
%{}
JSP EL表示法之所以有效,是因为有一个请求包装器,该请求包装器将首先遵从值堆栈进行查找,然后如果在值堆栈上未找到任何值,则退回到正常的JSP评估。
OGNL表达式符号仅在S2标签内有效。IMO在评估OGNL表达式时应使用,尽管它通常是可选的。 但是,当 它是可选的时,有点废话。通常,buuuut并非总是如此。最好使用它,并保持明确和交流。
你 可能 会问有关#的变量,像#session等#是用来解决值栈这是在“地图”部分上的值。我将值堆栈视为堆栈和范围的组合:如果将对象压入堆栈,则不需要#。如果已 创建 值,则需要#。
#
#session
例如,如果<s:set>用于创建变量,则必须使用#前缀来访问它,例如:
<s:set>
<s:set var="foo" value="'plugh'"/> <s:property value="#foo"/>