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表达式是无法正确别解析的,
分别是:
- Application server in question doesn't support JSP 2.0. (应用服务器不支持JSP2.0)
- The
web.xmlis not declared as Servlet 2.4 or higher. (web.xml中servlet版本没有声明在2.4以上) - The
@pageis configured withisELIgnored=true. (页面上配置了<%@ page isELIgnored="true" %> ) - 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表达式不解析的更多相关文章
- jsp页面el表达式不起作用
web.xml中2.4版本的默认导入的standerd.jar,和jstl.jar是使用el表达式的包是启动的而2.5版本的web.xml中默认是关闭的所以在2.5的所有jsp中需要启动一下用< ...
- 关于SSM框架项目中jsp页面EL表达式使用的一些疑问(一)
问题 ssm框架整合中,jsp页面中EL表达式所引用的对象“page”可以在controller中使用mav.addObject(“page”,pag )进行添加,如果省略mav.addObject( ...
- ssm项目导入activiti依赖后jsp页面el表达式报错
错误原因:Tomcat8.x与activiti6.0依赖冲突导致 解决方法: 1.修改tomcat版本 2.在pom.xml中修改 在依赖中把 <dependency> <group ...
- jsp页面el表达式<c:choose> <c:when的用法
等于 是if else <c:choose> <c:when test="${paginationModel.py_province != ''}"> 如果 ...
- jsp中的el表达式没有解析
今天发现jsp中的el表达式没有解析,把解决的过程记录一下 在web.xml的web-app节点的版本改成2.4以上
- MVC实现登录,增删改查之数据展示:JSP的EL表达式(二)
这里的数据展示利用jsp的EL表达式,后台放入session,前台EL获取 数据库设计是这样的,一个老师对应有多个学生,在学生表student中建立外键tid与老师表teacher的tid对应,现在老 ...
- JSP、EL表达式的入门(要用)
2018-08-12 22:55:23 * JSP.EL表达式的入门(要用) * Servlet/JSP 是两种动态的WEB资源的两种技术. * 使用Servlet 生成HTML的页面 ...
- 超全面的JavaWeb笔记day12<Jsp&JavaBean&El表达式>
1.JSP三大指令 page include taglib 2.9个内置对象 out page pageContext request response session application exc ...
- JSP的EL表达式语言
以下内容引用自http://wiki.jikexueyuan.com/project/jsp/expression-language.html: JSP表达式语言(EL)可以方便地访问存储在JavaB ...
随机推荐
- Oracle dos连接数据库基本操作
sqlplus / as sysdba;(sqlplus 用户名/密码@ip:端口:数据库实例 as sysdba;) ;(设置显示多少列,pagesize:;每页多少记录) select * fro ...
- 【Cocosd2d-x CCMenu菜单之二】
菜单项CCMenuItem是一个基类. 子类CCMenuItemFont.CCMenuItemLabel.CCMenuItemSprite.CCMenuItemToggle可增加CCMenu中形成菜单 ...
- Android事件的分发
1 http://blog.csdn.net/guolin_blog/article/details/9097463 2
- VS2012 未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService 未找到与约束ContractName,无法打开项目的解决方案 SQLyog 注册码
VS2012 未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService 最近新换了系统还真是问题多多呀! ...
- OpenGL/GLSL数据传递小记(3.x)(转)
OpenGL/GLSL规范在不断演进着,我们渐渐走进可编程管道的时代的同时,崭新的功能接口也让我们有点缭乱的感觉.本文再次从OpenGL和GLSL之间数据的传递这一点,记录和介绍基于OpenGL3.x ...
- eventfd
#include <sys/eventfd.h> int eventfd(unsigned int initval, int flags); eventfd() creates an &q ...
- An error occurred while searching for implementations of method
1:在我安装完scala的插件后,在打开方法的实现类(open implementactions)的时候,抛出这个异常,后来发现这个异常是因为我的scala的插件跟我eclipse版本不兼容导致的. ...
- iOS 控制器title和tabbar的title设置问题
iOS 设置tabbarItem的title的是通过 controller.tabBarItem.title = @"标题" iOS 设置导航栏控制器title通过 contoll ...
- android 常用方法总结
public class Toolkit { /** * * Role:Telecom service providers获取手机服务商信息 <BR> * * 需要加入权限<uses ...
- UML类图中的关系表示
UML类图中的关系和表示方法 类图是用来描述程序中的类以及它们之间的关系的,使用类图可以帮助我们简化对系统的理解.在UML类图中比较常见的关系有六种,它们分别是:依赖.关联.聚合.组合.泛化.实现,这 ...