jsp页面EL表达式取不到值问题;

如题:jsp页面EL表达式取不到值
条件:
以下五种写法与输出结果
1.${1111} 输出:1111
2.${pageContext.request.contextPath} 输出: /test
3.<%=request.getAttribute("ErrorMessage")%> 输出: 密码错误
4.${RequestScope.ErrorMessage} 输出:
5.${ErrorMessage} 输出:
问题:采用上述的最后两种方法无法取到值,显示为空白。
推测:
从上面的条件可以推测得知:1.我的页面支持EL表达式,2.“ErrorMessage”有值,
(请根据以上内容回答我的最终提问)
最终提问:我该怎么做才能让${ErrorMessage} 输出正确的值
受网友hujiang1225的启发,我再列出几个条件
<c:set value="request" var="msg1" scope="request"/>
<c:set value="page" var="msg2" scope="page"/>
<c:set value="session" var="msg3" scope="session"/>
<c:set value="application" var="msg4" scope="application"/>
<td><font color=red>${msg1}${msg2}${msg3}${msg4} </td>
输出:page
也就是说,只有page值能输出

希望大家能从配置环境方面着手,这些代码就我的机子的tomcat无法显示,在服务器上和别人的机子上都能正常显示

最后只好重装tomcat,问题就这么结束吧

jsp页面中用jstl取值:
如果是在java代码中 ,使用了request.setAttribute("attr","attrValue");
那么在jsp中获取request中的参数值就要使用下面的代码
${requestScope.attr} 或者${attr}
在<c:if></c:if test="....">表达式的test属性 中获取 session或request中的属性时,要使用empty或not empty
<c:if test="${not empty USER_INFO}">
<iframe src="${pageContext.request.contextPath}/myservice/NgCallServiceInfo.do" name="iframe" frameborder="0" width="728" height="276" class=""></iframe>
</c:if>
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-01-12
第4个 你${requestScope.ErrorMessage} 这样写看看
第5个 是因为 ErrorMessage 是request的值 你${ErrorMessage} 系统会默认在 本也里面找 所以找不到会没值
你的这样写 先用jstl表达式
<c:set value="${ErrorMessage}" var="msg" scope="request"/>
${msg}
这样就有值了
具体的看jstl表达式追问

刚才按你的写法试了下,还是取不到值。在这里 value="${ErrorMessage}" 就取不到了
我顺便试了下
" var="msg" scope="request"/>
${msg}
也是输出空白没有值,

追答

在页面最上面 导入一下这个

追问

还是取不到值

追答

" var="msg" scope="request"/>
你的c:set是这样写的
我的c:set是这样写的

你对比一下

追问

我是先按你的这种写法
取不到值,然后才试的" var="msg" scope="request"/>
这种写法

第2个回答  2012-01-12
在服务器端将ErrorMessage这个变量名改为errorMessage(改为小写开头),页面输出不用改。追问

这个没关系吧,我有按你说的试了下,还是一样的

追答

哦,忘了,页面也要改为小写哦(errorMessage)

追问

这个跟变量名没有关系,其实这是一个多人共同开发的项目,代码一样,其他人都能正常显示,我原先也能正常显示,后来不知道修改了什么东西,才变成这样的,

第3个回答  2012-01-12
'${RequestScope.ErrorMessage} '追问

在html语言中,value的值是不区分双引和单引的吧

追答

temp=" '${RequestScope.ErrorMessage} ' "

追问

我不明白你的意思

追答

value=" '${RequestScope.ErrorMessage} ' " 放进你的value用下看看或=" ‘’ " 取值时要加' '

追问



${msg1}${msg2}${msg3}${msg4}
输出:page
也就是说,只有page值能输出

本回答被提问者采纳
第4个回答  2012-01-12
我很想知道,你抛出异常了没有?
你在Action抛出异常了没有?,那么ErrorMessage肯定会拿到值得的。
你可以查一下RequestScope.ErrorMessage 会捕获的那种异常你抛出来。追问

这个只是页面与java程序传值,没有用到异常

追答

他那个是专门捕获异常的。他取得的值也是取异常里面的值。

追问

不是的,EL表达式并不只是用来捕获异常的

jsp怎么用el表达式把值显示出来?
1、需要导入架包和引用核心标签库之后才能用forEach(先去网上下载架包)2、你的List应该是通过从Servlet类里查出来的 先放在session里:request.getSession.setAttribute("list",list)3、引号里的list是设置的后一个list集合的名字,用来在jsp页面中取出list集合进行遍历!4、forEach格式如下:<c:forEac...

获取${}中的值? 比如说var a=${date },无法取出date中的值
EL表达式是这样的${ },但是只能用在jsp代码里面,比如 如果你想在js里面获取这个值的话,不妨先把这个值存到input里面,然后js获取input的值。比如 js: var in = $("#in").val();

JSP中el表达式的取值过程是怎样的?
el表达式和Springmvc没关系,el表达式取值必需是servlet四大作用(servletContext>session>request>pageContext)中有的值,这四个域都有setAttribute("",object)方法和getAttribute("")方法 el表达式 会自动从四大域中按作用范围从小到达寻找搜寻对应名字的值,其内部调用的就是pageContext的findAttribute("")方法;如...

jsp用el表达式遍历集合的时候,我想在一行只显示 两条数据,这个怎么实现...
这个简单啊 <c:forEach items="${book'}" var="b" varStatus="i"> ${b.name } <c:if test="${(i.index+1)%2==0 }"> <\/c:if> <\/c:forEach> 具体的自己改下

jsp怎么用el表达式把值显示出来?
假如你返回的list是result\\x0d\\x0a\\x0d\\x0a${r.属性}\\x0d\\x0a

jsp中EL表达式的问题
默认isELIgnored="false"。但在tomcat下如果使用j2ee5.0,会导致EL语言的失效,这个时候需要在jsp页面上方加上:<%@page isELIgnored="false"%> 或者在web.xml文件中修改最上面的版本为2.4,以及验证的xsd为web-app_2_4.xsd

jsp中el表达式如何获取当前输入框的值?
function changeEvent(str){ form1.text1.value = "你选择的地点是:" + str;} <textarea name="text1" cols="50" rows="2" onselect="javascript:alert('你想复制么');"> <\/textarea> 请选择地点: <!--this是事件源对象的一个引用,即某个option--> 北京 上海 深圳...

jsp EL表达式取值过程,page和pagecontext的区别
1、EL表达式解析过程 JSP中,我们经常会写为${obj.name}字样,但你有没有想过,它的取值过程是什么,属性值从哪取得?{obj}相当于 request.getAttribute("obj"),这句话严格来说不严谨,依次的请求范围是page、request、session、application 也就是说,如果在page.getAttribute()找不到,再去request....

EJB的JSP页面为什么不能用EL表达式 ,
isELIgnored="false" %> 声明可以使用EL表达式,如果sELIgnored为"ture",则表示忽略${,即不能使用EL表达式。参考资料:http:\/\/zhidao.baidu.com\/question\/208481362.html

el表达式获取不到request.setAttibute()的值
request.getParameter("");

相似回答