以下代码导致错误:
<c:set var="test" value="test1"/> <% String resp = "abc"; resp = resp + ${test}; //in this line I got an Exception. out.println(resp); %>
为什么小脚本中不能使用表达语言“ $ {test}”?
JSTL变量实际上是属性,默认情况下在页面上下文级别范围内。 因此,如果您需要在scriptlet中访问JSTL变量值,则可以通过getAttribute()在适当范围的对象(通常是pageContextrequest)上调用方法来实现。
getAttribute()
pageContext
resp = resp + (String)pageContext.getAttribute("test");
完整代码
<c:set var="test" value="test1"/> <% String resp = "abc"; resp = resp + (String)pageContext.getAttribute("test"); //No exception. out.println(resp); %>
但是为什么那个例外来到我这里。
一个JSP脚本用于包含任何代码片段是有效的页面中使用的脚本语言。脚本的语法如下:
<% scripting-language-statements %>
当脚本语言设置为Java时, 脚本小程序将转换为Java编程语言语句片段,并将其插入JSP页面的servlet的服务方法中。
您可以在scriptlet中编写Java代码,${test}而不能编写Java代码。
${test}