超超侠
2018-12-11 12:37
采纳率: 100%
浏览 1.8k
已采纳

在 JSP中使用EL ${}获取相应的值不起作用

提供部分代码

<c:when test="$ {sessionScope.user=null }">
<a href="$ {pageContext.request.contextPath}/Login.jsp">用户登录</a>
</c:when>
<c:otherwise>
欢迎你,$ {sessionScope.user.name } !
<a href="$ {pageContext.request.contextPath } ">注销</a>
</c:otherwise>


    想通过${}来获取相应的数据,但是程序运行的时候并没有获取到数据。
    具体出现的错误:1、$ {pageContext.request.contextPath}/Login.jsp,经过解析以后变成了$%20%7BpageContext.request.contextPath%20%7D/Login.jsp  2、$ {sessionScope.user.name }此处应该显示的是我登录的用户名,但是我访问到的网页上显示的内容就是$ {sessionScope.user.name }。

    仔细查看了代码,发现逻辑上没有问题,综合上述情况我觉得可能是${}在这里没有起到作用。

    同时我也在网上发现了很多人跟我有一样的情况,大致分为两类:一、web-app的版本在2.4以下。二、在jsp顶部配置信息中缺少了isELIgnored="false"。
    我看了自己的开发环境是tomcat8.0,jdk1.8,查看了wed-app的版本是3.0,所以基本排除第一种情况。
    第二种情况,我也在自己的顶部配置信息中加入了isELIgnored="false",但是运行以后依旧没有如上面出现的错误一样,没有访问到目标地址。
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • 王夜羽 2018-12-12 00:42
    已采纳

    很抱歉,看起来您的代码似乎没有问题,两种情况您也已经进行了排除,如果EL表达式没有生效的话,那应该是您的写法不正确,请确保使用英文的符号,而且,我之前使用EL表达式的时候,似乎并没有吧${}再分开使用,应该是您分开写之后,他认为您写的不是一个正确的El表达式,所以显示在了界面上,如果您需要使用的话,请您参考这个链接:https://www.cnblogs.com/czs1982/p/3966748.html
    如果我解决了您的问题,麻烦点一下采纳,如果并没有的话,请您在下方留言,我会继续解答您的问题

    点赞 评论
  • 超超侠 2018-12-11 12:38

    有没有遇到过类似这方面问题的可以帮忙解答一下吗

    点赞 评论
  • 爱码少年 2018-12-11 13:05

    去掉$后面的空格试试,保证${}均为英文字符

    点赞 评论
  • ainiburuqusi 2018-12-12 00:43
    <c:when test="$ {sessionScope.user=null }">
    

    你确定一个=能行?而不是==?

    点赞 评论
  • Java陌路 2018-12-12 07:58

    你是pageContent都没有值吗 而且同意楼上说法 应该是==吧 确定不报错?

    点赞 评论
  • 浮生-半日 2018-12-12 09:01

    导入el的类库了没, 如果没导, <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

    点赞 评论
  • 打车滚 2021-05-12 18:21

    我的情况和你一样,哎不知道为什么

     

    点赞 评论