在struts2的2.0.11及以上版本的changelog里,官方已经说了不再支持EL表达式,官方说的是因为安全问题,这个在 JE上已经有所讨论了。
至于struts2的标签还不支持<%%>这种JSP的标准java标签不知道是什么时候开始的,反正例如下面的
<s:url id="selectData1" value="<%=request.getContextPath()%>/test/country.jsp"/>
会报错
而<s:url id="selectData1" value="${pageContext.request.contextPath}/test/country.jsp"/>
也会报错(EL不支持)
那么如果我想得到应用的contextPath该怎么办呢,去google搜索,你会发现有人给出的方法
<s:property value="#request.get('javax.servlet.forward.context_path')" />
或是先用
<%request.setAttribute('root',request.getContextPath())%>
再用
<s:property value="%{#request.contextPath}" />
怎么感觉这两种都很别扭,后来我试验发现可以直接这么写:
<s:url id="selectData1" value="%{#request.getContextPath()}/test/country.jsp"/>
也是正确的.
ognl不仅支持lambda方式的取值,还支持这种普通的方法式的调用.
分享到:
相关推荐
OGNL(Object-Graph Navigation Language)是一种功能强大的表达式语言,用于获取和设置Java对象的属性,它广泛应用于Struts2框架中用于数据访问和表达式的解析。OGNL表达式提供了简洁的语法来访问和操作对象图,...
- Struts2标签库提供了丰富的标签用于简化页面开发,这些标签支持使用EL表达式来访问应用中的数据。因此,选项B是正确的。至于其他选项: - A. 导入struts标签库的正确代码应该是`<%@ taglib uri="/struts-tags" ...
在这个文档中,我们将深入探讨EL表达式,并通过与OGNL、JSTL和STRUTS2标签的对比,进一步理解其用法。 首先,让我们关注EL表达式的语法。EL表达式通常以`#{}`包围,它允许开发者以一种声明式的方式访问和操作Java...
- **$**:在JSP页面中表示EL表达式的开头,但在Struts2中通常不直接使用,而是通过#符号配合使用。 #### 五、示例代码详解 为了更好地理解OGNL表达式的使用,我们来看一个具体的示例。假设我们在开发一个简单的Web...
EL表达式通常以`$`符号开头,后面跟着大括号`{}`,例如`${expression}`。表达式内部可以是Java对象、属性、方法调用、算术运算等。例如,访问一个名为"user"的JavaBean的"name"属性可以写为`${user.name}`。 **2. ...
2. **EL表达式** (`${}`): EL表达式提供了一种简洁的方式来访问JavaBean属性。例如`${username}`可以直接引用`username`属性,无需额外的标签。 3. **Ognl表达式** (`%{}`): OGNL是Object-Graph Navigation ...
<s:property value="1>2 && 2<3" /> ``` #### 三、Struts2 标签详解 Struts2 提供了一套丰富的标签库,可以帮助开发者更高效地开发 Web 应用。 1. **引入 Struts2 标签库**: - 在 JSP 页面中使用 `<%@ taglib...
- **用法**: OGNL 通常与 Struts2 标签一起使用,不能单独在 Struts 页面中使用;而 EL 可以直接在 JSP 页面中使用。 - **取值**: OGNL 更适合于复杂的对象图导航,而 EL 更适用于简单的数据访问。 **与 JSTL 的...
本文总结了Struts2的常用方法和经验,涵盖了配置问题、EL表达式、Struts2的架构和Namespace等方面的知识点。 一、配置问题 Struts2的最新版本为GA 2.2.1,需要以下几个类库: 1.commons-fileupload-1.2.1.jar 2....
- 如果某些Struts2标签不支持OGNL表达式,可以通过`%{}`包裹OGNL表达式,使它们能够识别并执行。 8. **Struts2标签与OGNL**: - `<s:set>`标签常用来设置值栈中的变量。 - `<s:iterator>`将当前迭代对象置于栈顶...
在Struts2中,`<s:if>`标签是用于条件判断的,它允许开发者在页面中根据某些条件展示不同的内容。例如,如果session域中的`customer`对象为空, `<s:if test="%{#session.customer==null}">` 则会显示特定的HTML元素...
### Struts2中OGNL的概念及原理说明 #### 一、OGNL表达式的基本用法与特点 ...综上所述,OGNL和EL表达式在Struts2框架中扮演着重要角色,掌握这些概念和技巧有助于开发者更加高效地进行Web应用程序的开发。
我们将学习如何导入JSTL库,并使用 `<c:if>`, `<c:for>` 和 `<fmt:formatDate>` 等标签。 2. **EL表达式(Expression Language)** EL是JSP 2.0引入的轻量级表达式语言,用于在页面中便捷地访问JavaBean属性或执行...
- `${expression}` 在Struts2标签中非常常见,如 `<s:property value="${systemSettingModel.settingValue}" />` 用于显示属性值。 ### 综合应用实例 为了更好地理解这些符号的使用场景,我们可以通过几个具体的...
5. **JSP页面显示**:在JSP页面中,我们可以使用Struts的`<bean:message>`标签或者EL表达式来显示本地化的文本。例如: ```jsp <bean:message key="myKey" /> ``` 6. **处理多语言切换**:为了允许用户在应用中...
相对EL表达式,它提供了平时我们需要的一些功能,如: ? 支持对象的方法调用 ,如 xxx.sayHello(); ? 支持类静态方法调用和值的访问,表达式的格式为@[类全名]@[方法名|值名],例如:@java.lang.String@format(...
例如,`<jsp:include>`用于在页面间共享内容,`<jsp:forward>`用于转发请求,`<jsp:param>`用于传递参数。 3. **EL(Expression Language)**:EL是JSP 2.0引入的表达式语言,简化了从页面中获取和设置Java对象的值...