struts2 el表达式(EL表达式和struts 2 OGNL区别)

本文目录
- EL表达式和struts 2 OGNL区别
- 为什么我在struts2中使用EL表达式时就会报这个错
- 关于struts2框架的OGNL表达式
- struts2里面怎么用el表达式取值
- struts2中为什么可以用EL表达式取出valuestack中的值
- struts2中el表达式问题
- struts中在action里定义了一个Name属性为什么在EL表达式里可以直接获取到
- struts2使用el表达式取值的问题
EL表达式和struts 2 OGNL区别
这段就是带参数的url
相当于
hello
action的URL后面加上
?userName=Bruce+Phillips${helloLink}是EL表达式 《s:url
action=“hello“
var=“helloLink“》
《s:param
name=“userName“》Bruce
Phillips《/s:param》
《/s:url》
实际上这段的意思是将带参数的url字符串放到request属性中,再通过EL把它取出来${helloLink}可以换成${requestScope.helloLink}
为什么我在struts2中使用EL表达式时就会报这个错
你肯定定义了自定义标签,在你的web.xml中需要加入《jsp-config》
《taglib》
《taglib-uri》/mytablibURI《/taglib-uri》
《taglib-location》/WEB-INF/tlds/HelloTaglib.tld《/taglib-location》
《/taglib》
《/jsp-config》
这个是web.xml需要配置的 ,另外 能贴下你的tld代码和jsp代码吗? 这个代码的意思是你在tld里面声明的属性没有设置参数的,但是你却加了参数,自定义标签稍微有一点错,你的页面就跑不起来
关于struts2框架的OGNL表达式
Struts 2框架使用OGNL作为默认的表达式语言。 相对EL表达式,它提供了平时我们需要的一些功能,如: 支持对象方法调用,如xxx.sayHello(); 支持类静态方法调用和值访问,表达式的格式为 [类全名(包括包路径)] 方法名 | 值名], Ognl 有一个上下文(Context)概念,说白了上下文就是一个MAP结构,它实现了java.utils.Map接口,在Struts2中上下文(Context)的实现为ActionContext,下面是上下文(Context)的结构示意图 2.访问上下文(Context)中的对象需要使用#符号标注命名空间,如#application、#session 另外OGNL会设定一个根对象(root对象),在Struts2中根对象就是ValueStack(值栈) 。如果要访问根对象(即ValueStack)中对象的属性,则可以省略#命名空间,直接访问该对象的属性即可。 在struts2中,根对象ValueStack的实现类为OgnlValueStack,该对象不是我们想像的只存放单个值,而是存放一组对象。在OgnlValueStack类里有一个List类型的root变量,就是使用他存放一组对象
struts2里面怎么用el表达式取值
struts2中action及其属性会被包装成actionContext,在actionContext中有request、session等各个域,action中的属性会同步到request中,也就是放到了request作用域中,所以el表达式也可以取出。
你也可以用ActionContext.getSession.put(),(不知道记错没,你可以试试)手动将某个属性值放到session中,然后在jsp页面用el表达式也可以取出来。
struts2中为什么可以用EL表达式取出valuestack中的值
嗯.是的,struts2中action及其属性会被包装成actionContext,在actionContext中有request、session等各个域,action中的属性会同步到request中,也就是放到了request作用域中,所以el表达式也可以取出。
你也可以用ActionContext.getSession.put(),(不知道记错没,你可以试试)手动将某个属性值放到session中,然后在jsp页面用el表达式也可以取出来。
struts2中el表达式问题
Struts2(webwork)中一个很关键的概念是:valueStack(值栈)
具体网上很多见识啦,不一一描述。
在JSP页面上用Struts2-tag申明各种表达式获取值,都是从valueStack里取值。
所以,在Action里,重要的是把值放入valueStack。
最常用,最常用,最常用的
莫过于Action的成员变量,它们是会自动被放入valueStack的。
因此,
struts2
的入门知识,就是利用Action的成员变量在Action和JSP之间传递数值。
import
com.opensymphony.xwork2.ActionSupport;
public
class
loginAction
extends
ActionSupport
{
private
int
information
;
public
String
execute()
throws
Exception
{
information
=
3;
return
“success“;
}
//注意${information
}会反射调用getinformation方法的值,而非取information变量本身
public
int
getinformation
(){
return
information
;
}
}
struts中在action里定义了一个Name属性为什么在EL表达式里可以直接获取到
如果你说的是struts 2的话, 首先能获取到的条件之一,是你已经在 action类中给了 name属性一个 get方法。struts 2在导入struts 2的时候 会在web.xml中配置一个 filter。 你的请求只要经过了 这个filter 那么 struts 就会将你相应的 action中的 所有带 get方法的属性 都放在 request里面 并且,key值 就是你 action中的属性名 value当然就是对应的值了。所以用EL表达式才能直接获取
那个我完善一下啊,这里所说的 请求只要经过了 这个filter 什么的 其实基本上属于废话。因为struts 2 的主要功能都是通过filter来实现的。
struts2使用el表达式取值的问题
如果是值在request中,则可用${requestScope.....}取
和传统的《%=表达式%》一样,它可以将内容输出到页面中
PageContext---pageScope
Request----requestScope
session----sissionScope
Application----applicationScope
也可以作为动作标签的属性值
${requestScope.bean.prop}等价于
《%=request.getAttribute(“bean”).getProp()%》
《jsp:include file=“${includeFile}”/》等价于
《jsp:include file=“《%=pageContext.findAttribute(“includeFile”)%》”/》
格式:${属性名称}
多看看书,希望可以帮到你

更多文章:
direct object是什么意思(急急!!!direct object和indirect object怎么用)
2026年10月10日 08:40
struts2 el表达式(EL表达式和struts 2 OGNL区别)
2026年10月10日 08:30
截取字符串中的一部分js(用js 实现怎样从一个长字符串中截取特定的字符串)
2026年10月10日 07:40







