关于EL表达式的一个小问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 16:15:20
<body>
<%
String s = "a";
%>
${s};
</body>

这样为什么取不到s的值啊
我的问题是不能用s{}来去局部变量吗

EL表达式,是用来在作用域中来取值的,
而作用域 的概念要搞清楚
作用域一般包括:pageScope ,requestScope,sessionScope,applicationScope,而你在页面中写得值,那个S是保存在当前页面中的,并没有保存在作用域中,

所以要通过EL表达式来取值的话,就必须把那个S保存在其中一个随便的一个对象中(但是系统也会有一个默认的搜索这个作用域中的值的,会从小到大的范围来查找,首先是pageScope,没有话,会自动查找下一个作用域)

解决你这个题,可以是:
<% String s="a";
pageScope.setAttribute("key",s);
%>

${pageScope.key} //这样这个值就会取出来了(那个pageScope也可以不要,系统会自动查找的,这你就放心吧)

你可以用<%= s%>

这里你有个误解,,el表达式有个取值范围一般分成 applicationScope,sessionScope,requestScope,pageScope四种范围 从大到小,只有你的值是放在这四种范围里的才能取值出来 现在你的s 并没有放在任何的范围里 你可以尝试一下 先把s放到request里 然后取值看看。。。哦?成功了把? 就是这个意思。。。