el表达式不起作用的解决方案

关键字: el表达式不起作用
今天晚上学习SSH,发现一个el表达式在JSP2.0中不起作用的问题。反复调试多次,发现是web.xml中出了问题。猜测是版本的问题,但只知道了如何修改,不知道为什么那样修改。停止工作后看别人博客,很幸运的发现了原因。

tomcat5.0的版本, 使用了低版本,只求稳定。

web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">
2.4版本默认启用el表达式,如果使用2.5版本,默认el表达式是关闭的

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
那么对应2.5的web.xml -->  jsp页面里应该增加<%@ page isELIgnored="false"%>

一句话,凡是部署描述文件遵循Servlet2.4规范的WEB应用,EL表达式的计算默认是启用的,而未遵循的,则EL表达式的计算默认是禁用的。

所以解决方案还可以是:将web.xml中的DTD(文档类型定义)改问2.4的版本

引用http://foreverfly.iteye.com/blog/563806

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个问题可能是由于JSP页面中使用了异步加载(Ajax)导致的。异步加载会导致新的HTTP请求,而这个请求并没有携带原先的session信息。因此,可以考虑在异步请求中手动添加session信息,或者在JSP页面中将session信息保存到JavaScript变量中,在异步请求中使用该变量传递session信息。 下面是一些可能的解决方案: 1. 在异步请求中手动添加session信息 在异步请求中添加如下代码: ```java HttpSession session = request.getSession(); ``` 这将获取当前session对象。然后,可以将session信息添加到异步请求中: ```javascript $.ajax({ url: "someurl", data: {sessionid: '<%= session.getId() %>'}, success: function(data) { // handle response } }); ``` 这里将session ID添加到请求参数中。 在服务器端,可以通过session ID获取到session对象: ```java String sessionId = request.getParameter("sessionid"); HttpSession session = request.getSession(false); if (session != null && session.getId().equals(sessionId)) { // session found } else { // session not found } ``` 2. 将session信息保存到JavaScript变量中 在JSP页面中添加如下代码: ```java <% HttpSession session = request.getSession(); String username = (String) session.getAttribute("username"); %> <script> var username = '<%= username %>'; </script> ``` 这里将session中的username属性保存到JavaScript变量中。 在异步请求中,可以使用该变量传递session信息: ```javascript $.ajax({ url: "someurl", data: {username: username}, success: function(data) { // handle response } }); ``` 在服务器端,可以直接获取到该变量: ```java String username = request.getParameter("username"); ``` 这里假设在异步请求中传递了username参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值