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表达式不能解析的标志是原字符串显示,能解析没有值是空白)

       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

        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

   

 

   

        struts2

        /*

        REQUEST

FORWARD

   

 

 

 

 

不能用:

 

这个只能2.0低版本用

 

        struts2

       

           org.apache.struts2.dispatcher.FilterDispatcher

       

   

   

        struts2

        /*

REQUEST

FORWARD

   

 

 

 

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

 

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

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

 

 

 

你可能感兴趣的:(struts2,el,ognl)