Java后台框架篇--EL表达式为什么可以取到struts值栈中的值
来源:互联网 发布:telnet 的端口号是什么 编辑:程序博客网 时间:2024/06/05 20:34
1,el表达式自身就是会从request,session,application,pagecontext获取
2,由于在StrutsPrepareAndExecuteFilter中包装了request( request = prepare.wrapRequest(request);)StrutsRequestWrapper,
这个request又重写了getAttribute方法:
这个方法实现了从原来的requset,session等获取,然后获取不到再从值栈获取
public Object getAttribute(String s) {
if (s != null && s.startsWith("javax.servlet")) {
// don't bother with the standard javax.servlet attributes, we can short-circuit this
// see WW-953 and the forums post linked in that issue for more info
return super.getAttribute(s);
}
ActionContext ctx = ActionContext.getContext();
Object attribute = super.getAttribute(s);
if (ctx != null) {
if (attribute == null) {
boolean alreadyIn = false;
Boolean b = (Boolean) ctx.get("__requestWrapper.getAttribute");
if (b != null) {
alreadyIn = b.booleanValue();
}
// note: we don't let # come through or else a request for
// #attr.foo or #request.foo could cause an endless loop
if (!alreadyIn && s.indexOf("#") == -1) {
try {
// If not found, then try the ValueStack
ctx.put("__requestWrapper.getAttribute", Boolean.TRUE);
ValueStack stack = ctx.getValueStack();
if (stack != null) {
attribute = stack.findValue(s);
}
} finally {
ctx.put("__requestWrapper.getAttribute", Boolean.FALSE);
}
}
}
}
return attribute;
}
- Java后台框架篇--EL表达式为什么可以取到struts值栈中的值
- Struts2为什么可以用EL表达式取值?
- struts标签和EL表达式取session中的值
- struts2 request内幕 为什么在struts2用EL表达式可以取值
- struts2 request内幕 为什么在struts2用EL表达式可以取值
- EL表达式取Map中的值
- JSP中的EL表达式如何取值
- EL表达式取值
- EL表达式取值
- EL表达式取值
- EL表达式取值
- EL表达式取值
- EL表达式取值
- EL表达式取值
- EL表达式取值
- EL表达式取值
- struts2中为什么可以用EL表达式取出valuestack中的值
- el表达式取值顺序
- Debug日志:char text与char *text的区别
- 滤波反投影重建算法(FBP)实现及应用(matlab)
- 22. Generate Parentheses
- 关于DOS的一些小知识
- 原码、补码、反码
- Java后台框架篇--EL表达式为什么可以取到struts值栈中的值
- 堆、栈在内存中的存储以及程序调用
- 神经网络学习之代价函数详解
- Continuous Integration in DevOps
- 将java源码打成jar包
- 在 Python 中使用 Neo4j
- JZOJ 5266. number
- 使用IntelliJ IDEA 14和Maven创建java web项目
- 谈一谈,做一个杀毒软件,必备的Windows驱动程序