一、
对于取pageContext、parameters、request、session、application 等处的属性值(假如有 name 属性)时我们用的 EL 表达式分别是:
${pageScope.name}、${param.name}、{$requestScope.name}、{$sessionScope.name}、{$applicationScope.name}
那么对应的 OGNL 的解决方案分别是:
<s:peroperty value="#attr.name"/>
<s:property value="#parameters.name"/>
<s:property value="#request.name"/>
<s:property value="#session.name"/>
<s:property value="#application.name"/>
<s:textfield name="name" value="%{#parameters.name}"/>
说明,attr 如果可以访问到,则访问 pageContext,否则将 依次搜索 pageContext、request、session、application 相应值,所以可用来访问 pageContext 中的值,可替代 EL 的 ${pageScope.name}。
二、jsp页面显示
session 范围取值:
<s:property value="#session.mySessionPropKey"/>
<s:property value="#session['mySessionPropKey']"/>
request 范围取值:
<s:property value="#request['myRequestPropKey']"/>
在session中取值容易只要通过 %{#变量.属性名}即可,
<s:textfield value="request['myRequestPropKey']"/> 这种方式是取出不出数值的
label标签和文本标签取值,解决方法:
session 取值:
<s:label label="编辑用户" value="%{#session.user.m_sUserName}" required="true"/>
request 取值:
<s:textfield name="bdef" value="% {#request.对象名.属性名}" size="50" maxlength="50" />
分享到:
相关推荐
在示例代码中,`<s:property>`标签使用OGNL表达式`#request.req`、`#session.sess`和`#application.app`分别获取了Request、Session和Application范围内的属性值。这展示了OGNL如何灵活地访问不同级别的数据。 其次...
// 尝试从request范围内获取值 if (context != null && attribute == null) { // 如果request范围内没有找到,则尝试从ValueStack中获取 ValueStack stack = context.getValueStack_r(); attribute = stack....
OGNL是Struts2中强大的表达式语言,它允许开发者直接在JSP或Action中通过表达式来访问request、session和application中的数据。例如,`<s:property value="#session['key']" />`可以在页面上显示session中的值。在...
- `#request.userName` 代表从 `HttpServletRequest` 获取 `userName` 的值。 - `#parameters.userName` 代表从 HTTP 请求参数中获取 `userName` 的值。 为了使 EL 表达式能够访问到 ValueStack 中的数据,Struts2 ...
例如,`#request`、`#session`和`#parameters`分别代表请求、会话和参数范围内的对象。此外,`#`还可以用来引用OGNL表达式中的静态字段,如`#{java.lang.Math.random()}`。 2. `%`:在OGNL中,百分号`%`通常不直接...
4. 命名对象:包括在Servlet作用范围内的对象信息,如Request、Session、Application等。 在实际开发中,开发者可以通过OGNL表达式访问值栈中的Action属性、对象和其他信息。例如,使用标签可以输出Action中的属性...
OGNL可以直接访问值栈中的任何对象,例如`<s:property value="#session.user.name" />`将显示会话中用户对象的姓名。 3. **动态方法调用**:OGNL支持对对象的方法进行动态调用,如`()}" />`,即使`getFullName()`在...
在Struts2中,OGNL被广泛用于访问和操作应用程序中的对象属性,包括在请求、参数、session、application上下文中的数据。 1. **访问数据上下文**: - 在Struts2中,使用`#`符号可以访问特定的数据上下文,如`...
当页面元素的值为表达式时,可以使用`%{}`来执行OGNL表达式,该表达式通常用于动态生成HTML代码或者页面元素的值。例如: ```java ,'key2':'value2'}"/> ['key1']}" /> ``` 上述代码将显示`value1`作为页面上的内容...
在Struts2中,OGNL表达式可以访问Action上下文中的变量,如`#session`、`#request`等。 8. **类型转换**: OGNL可以自动进行类型转换,但也可以通过`#type`来显式指定类型,如`'123'.#int`将字符串转换为整数。 ...
- **Session Scope**:包含了用户会话的数据。 - **Parameters**:包含了HTTP请求的参数。 #### OGNL表达式的使用示例 下面通过几个具体的例子来说明如何在Struts2中使用OGNL: 1. **设置和获取数据**: 在...
在Struts2中,OGNL上下文被扩展为一个更复杂的结构,包含request、session、application、context map、OgnlValueStack等层次。OgnlValueStack(或简称为value stack)是核心,它是一个栈结构,通常包含用户对象、...
在Struts2框架中,理解并正确使用request、response、session和application范围对于有效地管理数据和状态至关重要。这些范围帮助我们在Web应用程序中实现逻辑和数据流的分离,提高代码的可维护性和可扩展性。通过...
- 在第29行、31行和33行,`<s:property>`标签使用OGNL表达式`#request.req`、`#session.sess`和`#application.app`分别访问了request、session和application范围内的属性值。这里的`#`符号标识了表达式的开始,`...
### Struts2中OGNL的概念及原理说明 #### 一、OGNL表达式的基本用法与特点 **OGNL**,即**Object Graphic Navigation Language**(对象图导航语言),是Struts2框架中用于处理对象及其属性的强大工具之一。通过...
当Action执行完毕后,其实例会被压入到值栈(ValueStack)中,同时session、request以及其他对象则放入Context Map。开发者可以通过OGNL表达式从值栈中轻松获取和修改数据。 1. **OGNL的属性访问** - 使用`.`或`['...
一是访问OGNL上下文和Action上下文,比如`#parameters`、`#request`、`#session`和`#application`分别对应HTTP请求的参数、请求属性、会话属性和应用程序范围内的属性。`#attr`则可以按照request -> session -> ...
`#root`代表整个上下文,`#request`、`#session`、`#application`分别对应HTTP请求、会话和全局应用程序范围的属性。 6. **OGNL的安全性** 虽然OGNL提供了极大的灵活性,但未正确配置可能导致安全问题,如OGNL注入...
#applicationContext, #session, #request等符号是OGNL在Struts2中的内置对象,分别代表了不同作用域的数据存储。#applicationContext用于访问应用范围的对象,#session访问会话范围的对象,#request访问请求范围的...