`

有关Struts2的标签不支持<%%>和$(EL表达式的符号)的问题

阅读更多

在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方式的取值,还支持这种普通的方法式的调用.

 

分享到:
评论
12 楼 gteam.yu 2010-12-29  
LZ 你直接使用STRUTS2标签<S:DEBUG />,然后看里面的解释,用#+ID可以取值,或者直接用ID取到VALUESTACK里面的值.
11 楼 guobangxiang 2010-10-21  
其实看个人习惯··我觉得JSTL + EL表达式 挺好用的
10 楼 hypercube1024 2010-10-15  
coffeesweet 写道
zhangyou1010 写道
用jstl不好些吗?


呵呵,项目统一用的struts2标签,如果单独为了这个问题用jstl标签,在其它的struts2标签里如果想引用该变量还是会有问题的.


struts2标签的性能差的不是一点,你用struts2标签和jstl分别迭代100行记录,看看执行时间就知道差多少倍
9 楼 angel243fly 2010-07-14  
以前为这个问题苦恼过。。。。。
8 楼 fierce 2010-07-14  
弱弱地问一下,EL的安全性问题,搜索不到相关帖,或者给个链接
7 楼 coffeesweet 2010-07-14  
aaa5131421 写道
其实我感觉统一使用jstl标签会更好一些,mvc这种还是只用他的控制逻辑的比较好。


呵呵,关于标签这东西还是各有所需吧,习惯哪个就用哪个好了,看个人习惯了,嘿嘿!
6 楼 lwcheng1985 2010-07-14  
恩,不错,我说经常用el时,会出现莫名的错误,thks
5 楼 aaa5131421 2010-07-13  
其实我感觉统一使用jstl标签会更好一些,mvc这种还是只用他的控制逻辑的比较好。
4 楼 coffeesweet 2010-07-13  
zhangyou1010 写道
用jstl不好些吗?


呵呵,项目统一用的struts2标签,如果单独为了这个问题用jstl标签,在其它的struts2标签里如果想引用该变量还是会有问题的.
3 楼 sunliao_first 2010-07-13  
有些标签觉得使用html更完美
2 楼 zhangyou1010 2010-07-13  
用jstl不好些吗?
1 楼 tanglei528 2010-07-13  
恩  , 不错  !  学习一下

相关推荐

    struts2标签和OGNL表达式.pdf

    OGNL(Object-Graph Navigation Language)是一种功能强大的表达式语言,用于获取和设置Java对象的属性,它广泛应用于Struts2框架中用于数据访问和表达式的解析。OGNL表达式提供了简洁的语法来访问和操作对象图,...

    struts2综合复习习题

    - Struts2标签库提供了丰富的标签用于简化页面开发,这些标签支持使用EL表达式来访问应用中的数据。因此,选项B是正确的。至于其他选项: - A. 导入struts标签库的正确代码应该是`&lt;%@ taglib uri="/struts-tags" ...

    【温故而知新】一个极好极全极简明的EL表达式的学习文档

    在这个文档中,我们将深入探讨EL表达式,并通过与OGNL、JSTL和STRUTS2标签的对比,进一步理解其用法。 首先,让我们关注EL表达式的语法。EL表达式通常以`#{}`包围,它允许开发者以一种声明式的方式访问和操作Java...

    OGNL表达式

    - **$**:在JSP页面中表示EL表达式的开头,但在Struts2中通常不直接使用,而是通过#符号配合使用。 #### 五、示例代码详解 为了更好地理解OGNL表达式的使用,我们来看一个具体的示例。假设我们在开发一个简单的Web...

    el表达式的使用全集

    EL表达式通常以`$`符号开头,后面跟着大括号`{}`,例如`${expression}`。表达式内部可以是Java对象、属性、方法调用、算术运算等。例如,访问一个名为"user"的JavaBean的"name"属性可以写为`${user.name}`。 **2. ...

    Struts2页面取值总结

    2. **EL表达式** (`${}`): EL表达式提供了一种简洁的方式来访问JavaBean属性。例如`${username}`可以直接引用`username`属性,无需额外的标签。 3. **Ognl表达式** (`%{}`): OGNL是Object-Graph Navigation ...

    struts学习笔记(4)

    &lt;s:property value="1&gt;2 && 2&lt;3" /&gt; ``` #### 三、Struts2 标签详解 Struts2 提供了一套丰富的标签库,可以帮助开发者更高效地开发 Web 应用。 1. **引入 Struts2 标签库**: - 在 JSP 页面中使用 `&lt;%@ taglib...

    JSTL、EL、ONGL、Struts标签的区别

    - **用法**: OGNL 通常与 Struts2 标签一起使用,不能单独在 Struts 页面中使用;而 EL 可以直接在 JSP 页面中使用。 - **取值**: OGNL 更适合于复杂的对象图导航,而 EL 更适用于简单的数据访问。 **与 JSTL 的...

    struts2学习心得

    本文总结了Struts2的常用方法和经验,涵盖了配置问题、EL表达式、Struts2的架构和Namespace等方面的知识点。 一、配置问题 Struts2的最新版本为GA 2.2.1,需要以下几个类库: 1.commons-fileupload-1.2.1.jar 2....

    struts2中的ognl

    - 如果某些Struts2标签不支持OGNL表达式,可以通过`%{}`包裹OGNL表达式,使它们能够识别并执行。 8. **Struts2标签与OGNL**: - `&lt;s:set&gt;`标签常用来设置值栈中的变量。 - `&lt;s:iterator&gt;`将当前迭代对象置于栈顶...

    J2EE企业级项目开发-1期 02 Struts2+Web常使用功能的经验.doc

    在Struts2中,`&lt;s:if&gt;`标签是用于条件判断的,它允许开发者在页面中根据某些条件展示不同的内容。例如,如果session域中的`customer`对象为空, `&lt;s:if test="%{#session.customer==null}"&gt;` 则会显示特定的HTML元素...

    struts2中OGNL的一些概念及原理说明

    ### Struts2中OGNL的概念及原理说明 #### 一、OGNL表达式的基本用法与特点 ...综上所述,OGNL和EL表达式在Struts2框架中扮演着重要角色,掌握这些概念和技巧有助于开发者更加高效地进行Web应用程序的开发。

    JSP高级API培训4

    我们将学习如何导入JSTL库,并使用 `&lt;c:if&gt;`, `&lt;c:for&gt;` 和 `&lt;fmt:formatDate&gt;` 等标签。 2. **EL表达式(Expression Language)** EL是JSP 2.0引入的轻量级表达式语言,用于在页面中便捷地访问JavaBean属性或执行...

    % # $ 的区别 及用法

    - `${expression}` 在Struts2标签中非常常见,如 `&lt;s:property value="${systemSettingModel.settingValue}" /&gt;` 用于显示属性值。 ### 综合应用实例 为了更好地理解这些符号的使用场景,我们可以通过几个具体的...

    struts国际化示例代码

    5. **JSP页面显示**:在JSP页面中,我们可以使用Struts的`&lt;bean:message&gt;`标签或者EL表达式来显示本地化的文本。例如: ```jsp &lt;bean:message key="myKey" /&gt; ``` 6. **处理多语言切换**:为了允许用户在应用中...

    OGNL表达式语言.txt

    相对EL表达式,它提供了平时我们需要的一些功能,如: ? 支持对象的方法调用 ,如 xxx.sayHello(); ? 支持类静态方法调用和值的访问,表达式的格式为@[类全名]@[方法名|值名],例如:@java.lang.String@format(...

    jsp应用开发详解(中文高清pdf版)

    例如,`&lt;jsp:include&gt;`用于在页面间共享内容,`&lt;jsp:forward&gt;`用于转发请求,`&lt;jsp:param&gt;`用于传递参数。 3. **EL(Expression Language)**:EL是JSP 2.0引入的表达式语言,简化了从页面中获取和设置Java对象的值...

Global site tag (gtag.js) - Google Analytics