转载自  JSP页面EL表达式不解析

问题是这样:在搭建springMVC环境的时候,笔者写了一个简单的Controller如下:

@Controller
public class HelloController {@RequestMapping(value = "/hello.do", method = RequestMethod.GET)public String hello(Model model) {model.addAttribute("hello", "hello_SpringMVC");model.addAttribute("message", "Hello SpringMVC");return "hello";}
}

调用这个控制器,返回hello.jsp,页面代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${hello}<br>
${message}<br>
${hello123 }
</body>
</html>

正常情况下页面应该会输出字符串信息,可是实际上输出结果是未经解析的EL表达式。

笔者查看了日志,发现hello和message都正确的转发到了hello.jsp中,可是EL表达式为什么没有正确的解析呢?

经过查阅资料,有四种情况下EL表达式是无法正确别解析的,

分别是:

  1. Application server in question doesn't support JSP 2.0. (应用服务器不支持JSP2.0)
  2. The web.xml is not declared as Servlet 2.4 or higher.  (web.xml中servlet版本没有声明在2.4以上)
  3. The @page is configured with isELIgnored=true. (页面上配置了<%@ page isELIgnored="true" %> )
  4. The web.xml is configured with <el-ignored>true</el-ignored> in <jsp-config>. (web.xml中显式地配置了忽略EL表达式)

最终发现我的web.xml中声明的servlet版本是2.3,所以默认是不自动解析EL表达式的。

而我的web.xml这样是使用了maven-archetype-webapp创建的缘故。

<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>
</web-app>

只要更改成如下即可, 版本最好是你项目中使用的JSP版本,

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
...
</web-app>

总结一下:页面无法解析EL表达式是因为web.xml中JSP版本在2.4一下,而我在项目中使用的是JSP3.0,原因在于工程是通过maven-archetype-webapp创建的,而这个maven工程默认还在使用JDK1.5。

JSP页面EL表达式不解析相关推荐

  1. JSP页面El表达式不起作用,例如${sessionScope.user.username }等不起作用的问题

    首先查看web.xml文件 查看jsp servlet版本是多少? 头文件中 <!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//D ...

  2. Javaweb8==未实现前后端分离的列表展示、新增、删除、修改功能。 servlet(逻辑处理,封装数据进域对象,转发到jsp)+jsp(el表达式获取域对象中的数据+JSTL替换if for)。

    最终环境配置: IDEA2021+JDK8+mysql connector java5+Mysql5+mybatis3.5:从数据库取出数据. +(servlet+jsp+el表达式jstl):ser ...

  3. JSP 中EL表达式用法详解

    EL 全名为Expression Language EL 语法很简单,它最大的特点就是使用上很方便.接下来介绍EL主要的语法结构: ${sessionScope.user.sex} 所有EL都是以${ ...

  4. 【JSP】EL表达式

    EL表达式 EL表达式干什么用的? EL表达式的使用 面试题 如何输出对象属性值? 域中取数据注意事项 EL表达式的空处理 如何从Map集合中取数据 如何从数组或者List集合中获取数据 局部忽略EL ...

  5. idea修改java和jsp不起作用_使用IDEA编写jsp时EL表达式不起作用的问题及解决方法...

    在使用IDEA开发maven+springMVC项目时遇到不加载EL表达式的问题,怎么处理呢?下面小编给大家带来了实现代码,一起看看吧 加载如下JSP代码: Title ${lists.usernam ...

  6. JSP的EL表达式中除法取整

    这两天回头瞅了瞅JSP.稍微敲了点代码.碰到一个比较恶心的坑.做个笔记,说不定能帮助到大家. 遇到问题是: 在使用JSP的EL表达式时,两个从后端传过来的int数据(暂定 a =10 ,b =5).然 ...

  7. 【方向盘】版本历史代码示例之:Servelt、JSP、EL表达式

    工具好,也要用得巧. 本文已被https://yourbatman.cn收录:女娲Knife-Initializr工程可公开访问啦:程序员专用网盘https://wangpan.yourbatman. ...

  8. JSP中EL表达式无效的问题

    http://doujiang327.iteye.com/blog/231840 第一步: 首先确定你是否导入的JSTL包. 在项目上右键,Myeclipse-->Add JSTL Librar ...

  9. JSP之EL表达式详细介绍

    一.JSP EL语言定义 E L(Expression Language)  目的:为了使 JSP写起来更加简单. 表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 ...

最新文章

  1. 一些关于人工智能的讨论(二)
  2. 12c oracle 激活_Windows运维之Windows server 2016 安装及ORACLE 12C 安装
  3. Uim的情人节礼物·其之弐(洛谷-P2524)
  4. php70w-mysql_Centos Apache+PHP5.6/PHP7.0+mysql5.5
  5. 模型保存的方法-----保存整个模型
  6. 拉普拉斯二阶锐化matlab,laplace(拉普拉斯)锐化matlab程序
  7. 基于Visua C++2010 与 Windows 7 SDK开发windows7 Shell应用(1)-搜索文件夹
  8. 解决:启动项目报错 java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory...
  9. 分析华为毕昇JDK8:一个性能开关
  10. 关于WIN10显示“未安装任何音频输出设备” 英特尔(R)智音系统OED启动错误(代号10)解决办法
  11. 如何将现有Apple ID 更改为美区
  12. 联想thinkpad E430C硬盘位换为固态,硬盘放于光驱位(win7+win10+ubuntu三系统安装教程)
  13. 国美易卡利用大数据,国美易卡衍生三大类产品模型
  14. 一个UIView最多能有多少个superView?
  15. windows怎样连接到linux桌面,Windows远程桌面连接Ubuntu 14.04
  16. 计算机显示技术发展,显示技术的发展 与展望
  17. TypeScript-多态篇
  18. 免费的Gif制作工具-录屏、录像
  19. 飞机上的飞行数据记录处理运算 ReXgen 2 IMU:达到新的高度 惯性导航 航位运算
  20. win10 关闭微软 Egde 浏览器后台

热门文章

  1. 「软件项目管理」软件项目范围计划——需求管理与任务分解
  2. 高考英语口试计算机系,大学英语口语考试都考什么,高考英语口试考什么?
  3. java开发中准则怎么写_Java开发中通用的方法和准则20条
  4. 下拉菜单实现树状结构_树形图:复杂层次结构的数据可视化
  5. 数据结构---多源最短路径
  6. 数据结构----单源最短路径Dijkstra
  7. 找出一个字符串中出现次数最多的字_Day34:第一个只出现一次的字符
  8. Nsight 调试 Caffe
  9. 牛客小白月赛12:月月给华华出题(欧拉函数)
  10. P5055 【模板】可持久化文艺平衡树