`

struts2中使用EL问题

阅读更多

According to TLD or attribute directive in tag file, attribute value does not accept any expressions

 

显示这个异常是 因为在struts2的标签内部使用${}这样的方式,会出现。

 

.${}是EL语言的 %{}这样的形式是ognl表过式语言的,在struts2的标签内部,使用%{}这样的形式,在标签外部可以使用${}EL语言的方式

 

Struts 2从 version 2.0.11开始已经不支持struts tag与JSP EL表达式混合使用了(不在struts tag里使用EL还是可以的),而只支持OGNL

 

写道
因为ognl的有些语法跟el表达式很像,在tag包含了对el表达式的支持
会导致一些恶意的ognl也被执行,所以不得不禁止掉了…

 

看来不得不去学习下ongl了。

也听说此ongl很强大。

 

Trick Tip:

对于<s:property>,是使用

<s:property value="#parameters.name " />

而对于<s:set>,则要使用(否则出错):

<s:set name="name" value="#parameters.name[0]" />

 但是如果使用struts include tag来传参数,则<s:property>和<s:set>无法获取传来的参数,如:

  < body >
     
< s:include   value = "/welcome.jsp" >  
           
< s:param name ="name" > Scott </ s:param >
     
</ s:include >
 
</ body >

那么在webcome.jsp 里通过<s:property>和<s:set>无法获取"name"参数:

<s:property value="#parameters.name " />

<s:set name="name" value="#parameters.name[0]" />

而只能够用

<%request.getParameter("name")%>

来获取

 

 

ONGL:http://www.blogjava.net/max/archive/2007/04/28/114417.html

 

写道
Struts 2默认的表达式语言是OGNL,原因是它相对其它表达式语言具有下面几大优势:

1. 支持对象方法调用,如xxx.doSomeSpecial();
2. 支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名 | 值名],例如:@java.lang.String@format('foo %s', 'bar')或@tutorial.MyConstant@APP_NAME;
3. 支持赋值操作和表达式串联,如price=100, discount=0.8, calculatePrice(),这个表达式会返回80;
4. 访问OGNL上下文(OGNL context)和ActionContext;
5. 操作集合对象。
 
分享到:
评论

相关推荐

    struts-html-el.tld

    struts-html-el.tld

    struts2标签使用方法

    - 在JSP页面中使用Struts2标签和EL表达式展示或操作数据。 4. **实例应用**: - 假设有一个User对象,包含name和email属性,我们可以在Action类中创建User对象并填充属性。 - 在Action配置中,将User对象放入...

    struts-tiles-el.tld

    struts-tiles-el.tld

    留言板留言板struts2留言板struts2

    2. **Action与ActionMapping**:在Struts2中,业务逻辑通常封装在Action类中。一个Action类对应一个用户请求,处理来自客户端的请求并返回结果。ActionMapping则负责配置Action与URL的映射关系,使得请求能正确路由...

    struts1和struts2的区别

    - **Struts2**: Struts2中的Action更像是工厂模式下的产品,每个Action实例都是线程安全的。Struts2提供了ActionSupport基类来简化Action的实现。Action本身可以是任何实现了特定接口的Java对象,甚至是普通的POJO。...

    struts2jar.zip

    "使用说明-jar包.txt"很可能是一个文本文件,提供了关于如何在项目中使用Struts2库的指导。通常,Struts2的核心库和其他依赖库会以JAR(Java Archive)文件的形式包含在项目中,这些JAR文件包含了框架的所有类和方法...

    struts jstl el表达式示例代码

    struts jstl el表达式示例代码 struts jstl el 表达式 源码

    我的struts2的总结

    在Struts2中,EL表达式可以用来动态获取Action类中的属性值。当EL表达式无法找到对应的属性或者属性值为null时,可能会抛出异常。因此,在使用EL表达式时需要注意确保引用的属性是可用的。 ### 国际化资源文件 ...

    Struts2与Struts1区别

    - Struts1 使用 JSTL 的 EL(Expression Language),而 Struts2 引入了自己的 OGNL(Object-Graph Navigation Language),提供了更强大的数据访问和操作能力,允许在视图层更自由地访问和操作模型数据。...

    struts-el-1.3.10.jar struts-el.jar strutsEL标签库

    struts-el-1.3.10.jar struts-el.jar strutsEL标签库

    STRUTS2国际化的问题

    在Struts2中,可以通过`HttpServletRequest`对象获取用户的`Locale`信息,例如:`Locale locale = request.getLocale();`。 2. **动态加载资源文件**:根据用户的`Locale`信息动态加载相应的资源文件。这可以通过...

    Struts1和Struts2区别

    - **Struts2**:默认使用OGNL作为表达式语言,同时也支持JSP EL。OGNL提供了更强大的对象导航和表达式能力。 3. 视图技术: - **Struts1**:主要使用JSP和Tiles作为视图技术,Tiles提供了一种组织和重用页面布局...

    struts2学习心得

    7. **Struts2标签库的使用**:为了方便在JSP页面中使用Struts2标签,需要在页面头部声明对应的标签库。例如,`&lt;%@taglib prefix="s" uri="/struts-tags"%&gt;`这一行代码就是用来导入Struts2的标签库,使得后续可以在...

    struts2简单案例

    - **Action类**:在Struts2中,Action类是处理用户请求的中心组件,它封装了业务逻辑,并通过调用Service层来处理实际的业务操作。 - **配置文件**:`struts.xml`是Struts2的主要配置文件,用于定义Action、结果...

    Struts2用到的核心jar包

    Struts2用到的核心jar包: ... 在Struts2中提倡使用 freemarker模板,但实际项目中使用jsp也很多。 commons-fileupload-1.2.1.jar 用于实现文件上传功能的jar包。 使用时候将5个Struts2的核心Jar包到WEB-INF/lib/下

    struts与struts2的区别

    Struts2支持OGNL(Object-Graph Navigation Language)作为其默认表达式语言,允许在JSP页面中直接访问对象属性和执行方法,而Struts1使用的是JSP EL(Expression Language)或者自定义的Struts标签。 **4. 视图...

    struts2配置详解

    从 Struts1 升级到 Struts2: 1、Struts1 里使用 ActionServlet 作为控制器; Struts2 使用了一个过滤器作为控制器 2、Struts1 中每个 ...5、Struts2 在页面里使用 OGNL 来显示各种对象模型, 可以不再使用 EL 和 JSTL

    struts2 与 struts1的区别

    值得注意的是,在Struts2中,Action接口并不是强制性的,任何包含`execute`标记的方法所在的POJO都可以用作Action对象。 #### 二、线程安全模型 - **Struts1** 中的Action采用的是单例模式,这意味着对于所有的...

Global site tag (gtag.js) - Google Analytics