`
y806839048
  • 浏览: 1120451 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

el表达式与ognl表达式(el失效)

阅读更多

 

在框架出问题时,可能由于版本兼容等,可以直接官网下载框架源码demo运行,在纯净的环境下测试,,大框架的时候,参考配置也应如此

 

 

 

二者在sturts2中效果一致,el会先从web资源对象(quest,session等)中去,取不到从valuestack中取,

 

EL表达式原本的查找顺序为:

 page,request,session,application,找到返回。

值栈并不在EL表达式的作用范围之内,因此不能使用。但是 struts2对request对象进行了增强,即StrutsRequestWrapper对象,里面重写了getAttribute()方法:在request找不到之后到值栈里面找,因此

EL表达式的查找顺序变为:page,request,valueStack.findValue(),session,application。

值栈:

root:action对象

context:map---》web资源

 

 

但是el表达式只需要jsp servlet版本2.4,才可解析el,(el表达式不能解析的标志是原字符串显示,能解析没有值是空白)

<web-app version="2.4" 

       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">

 

 

 

jstl标签需要jstl,standar.jar

 

 

 

有时在升级的时候由于过滤器的问题导致el获取不到,只有struts标签可以获取

 

2.3.xx用这个

 

<!-- Struts2 配置-->

<filter>

        <filter-name>struts2</filter-name>

        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

    </filter>

 

    <filter-mapping>

        <filter-name>struts2</filter-name>

        <url-pattern>/*</url-pattern>

        <dispatcher>REQUEST</dispatcher>

<dispatcher>FORWARD</dispatcher>

    </filter-mapping>

 

 

 

 

不能用:

 

这个只能2.0低版本用

 

<filter>

        <filter-name>struts2</filter-name>

        <filter-class>

           org.apache.struts2.dispatcher.FilterDispatcher

        </filter-class>

    </filter>

    <filter-mapping>

        <filter-name>struts2</filter-name>

        <url-pattern>/*</url-pattern>

<dispatcher>REQUEST</dispatcher>

<dispatcher>FORWARD</dispatcher>

    </filter-mapping>

 

 

 

还有就是升级的时候sturts时的标签库需要通步改回,2.0改为2.3

 

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

 

</struts>

 

 

分享到:
评论

相关推荐

    表达式与言EL和OGNL

    **表达式语言(EL)与OGNL概述** 表达式语言(EL)是用于在Java应用程序中简洁地访问和操作对象属性的一种方式。它允许开发者通过简单的语法来读取和设置对象的属性,调用方法,以及执行其他面向对象的操作。在Java EE...

    ognl表达式 ognl表达式

    ### OGNL表达式的理解和应用 #### 一、OGNL简介与基本概念 OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置Java对象的属性。它是Struts2框架中的默认表达式语言,同时也被广泛...

    ognl表达式java使用案例详解(测试通过)

    Struts 2默认的表达式语言是OGNL,原因是它相对其它表达式语言具有下面几大优势: 1、 支持对象方法调用,如xxx.doSomeSpecial(); 2、支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@...

    【温故而知新】一个极好极全极简明的EL表达式的学习文档

    在这个文档中,我们将深入探讨EL表达式,并通过与OGNL、JSTL和STRUTS2标签的对比,进一步理解其用法。 首先,让我们关注EL表达式的语法。EL表达式通常以`#{}`包围,它允许开发者以一种声明式的方式访问和操作Java...

    EL表达式所有jar包(包含两个)

    9. **EL与JSR 341 ExpressionEvaluatorManager**:在Java EE环境中,可以注册自定义的ExpressionEvaluatorManager来处理特定的表达式类型。 10. **EL的安全性**:需要注意的是,EL表达式也可能带来安全风险,如代码...

    s:iterator的EL表达式原理

    EL表达式在JSP 2.0及更高版本中被广泛使用,与JSTL(JavaServer Pages Standard Tag Library)一起提供了更简洁的页面表示方式。 **OGNL(Object-Graph Navigation Language)** 在EL表达式中,实际上底层是使用了...

    WebWork教程-表达式与言EL和OGNL- babydavic(王汉祥)的专栏- CSDNBlog.zip

    WebWork教程-表达式与言EL和OGNL- babydavic(王汉祥)的专栏- CSDNBlog.zipWebWork教程-表达式与言EL和OGNL- babydavic(王汉祥)的专栏- CSDNBlog.zip

    OGNL表达式

    - **条件判断**:在视图层使用OGNL表达式进行逻辑判断,从而控制页面元素的显示与隐藏。 - **动态查询**:构建动态SQL查询语句时,OGNL表达式可以帮助生成更加灵活的查询条件。 #### 四、OGNL表达式的具体用法 ...

    ognl表达式教程

    ognl表达式的详细教学描述,介绍如何使用ognl表达式和ognl的运行原理

    JS:ognl表达式

    ### JS:ognl表达式详解 #### 一、OGNL表达式概述 OGNL (Object-Graph Navigation Language) 是一种强大的表达式语言,用于获取和设置 Java 对象的属性。它最初是由 John Rose 和 Luke Blanshard 开发,并被广泛...

    ognl和el区别

    在Struts2框架中,OGNL(Object-Graph Navigation Language)和EL(Expression Language)都是用于数据绑定和表达式处理的重要工具,它们在处理视图层与模型层的数据交互方面发挥着关键作用。理解这两者的差异有助于...

    struts2官方表达式ognl源码

    其中,OGNL(Object-Graph Navigation Language)是Struts2中的核心表达式语言,用于数据绑定和表达式求值。这篇内容将深入探讨OGNL及其在Struts2中的应用,并解析其源码,帮助你更好地理解这一强大工具。 **1. ...

    el和ongl表达式学习

    1. **深度属性导航**:与EL类似,OGNL也可以访问和操作对象的深层属性,但它支持更复杂的路径表达式。 2. **动态类型和运行时类型检查**:OGNL可以处理任意类型的对象,且在运行时检查类型。 3. **表达式计算**:...

    struts2中OGNL的一些概念及原理说明

    5. **EL表达式与OGNL表达式的比较**:尽管学习了OGNL表达式,但在实际项目中,EL表达式仍然是非常有用的。特别是对于简单的数据获取场景,EL表达式因其简洁性和安全性而被广泛采用。 #### 二、OGNL上下文-...

    OGNL表达式语言学习

    NULL 博文链接:https://huguifuture.iteye.com/blog/761843

    ognl表达式

    OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,常用于Java应用程序,特别是Web开发中的框架,如Struts 2。它允许开发者简洁、直观地访问和操作对象图,即对象之间的关联关系。理解并熟练掌握...

    struts2 中 OGNL表达式的使用

    struts2 中 OGNL表达式的使用struts2 中 OGNL表达式的使用

    Struts2 使用OGNL表达式

    10. **OGNL与拦截器**:Struts2的拦截器机制允许在执行Action之前或之后对数据进行处理,而OGNL则可以用来设置或读取这些数据。 总的来说,了解并熟练掌握OGNL是深入理解Struts2框架的关键。通过使用OGNL,开发者...

    ognl表达式案例

    描述中提到的"ognl标签"是指Struts2提供的与OGNL相关的标签库,它们使得在JSP页面上更加方便地使用OGNL表达式。例如,`&lt;s:property&gt;`标签可以用来输出对象的属性值,其value属性可以是OGNL表达式,如`...

Global site tag (gtag.js) - Google Analytics