[英]Expression Language: variables vs. attributes
我想我错过了一些关于表达语言的基本知识。
practice.jsp (下面)输出14
,如预期的那样。
<jsp:scriptlet>
request.setAttribute("a", 5);
request.setAttribute("b", 9);
</jsp:scriptlet>
${a+b}
practice2.jsp (下面)输出0
。
<jsp:scriptlet>
Integer a = 5;
Integer b = 9;
</jsp:scriptlet>
${a+b}
在practice2.jsp中发生了什么? 为什么EL似乎无法评估这些变量? 这是一个范围问题,还是我错过了更大的东西?
JSP 2.2规范描述了如何解析变量:
${product}
此表达式将查找名为product的属性,搜索页面,请求,会话和应用程序范围,并将返回其值。 如果未找到该属性,则返回null。
这些范围记录为:
Scriptlets ( <% %>
)是一种古老的机制,允许您将Java代码直接注入到JSP语法生成的servlet中。 也就是说,它们允许您将业务逻辑注入到视图中。
由于您的代码未将值设置为上述任何范围,因此表达式语言变量解析器无法看到它们。
scirplet中变量的范围仅限于scriplet,
尝试这个:
<jsp:scriptlet>
Integer a = 5;
Integer b = 9;
pageContext.setAttribute("a", a);
pageContext.setAttribute("b", b);
</jsp:scriptlet>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.