struts2中的OGNL表达式

本文介绍了OGNL(Object-Graph Navigation Language)语言在Struts2框架中的使用方法,包括如何通过OGNL访问对象属性、调用方法及处理集合等,并提供了具体的标签示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OGNL:Object-Graph Navigation Language,即对象图导航语言,它在struts2中很强大,但是离开了struts2基本上没什么用,其他框架很少支持这个语言。

它可以访问对象的任意属性和方法,struts2会解析表达式的内容,有与表达式相关的数据则会显示,否则什么都不显示

<s:property value="justtest"/><br>    //不显示任何内容
<s:property value="'test'"/><br>    //显示test,因为把表达式转为字符串来
<s:property value="'test'.length()"/><br>    //调用了String类的length()方法,显示test的长度 4
<s:property value="'test'.toUpperCase()"/><br>    //显示TEST
<s:property value="@java.lang.Integer@MAX_VALUE"/><br>    //取Integer类的静态属性
<s:property value="@java.lang.Math@random()"/><br>    //调用Math类的静态方法。这里需要先去struts.xml中配置一个struts.ognl.allowStaticMethodAccess属性。

字符串转ognl表达式:%{}

ognl表达式转字符串:%{""}    %{''}    ''    ""    (是单引号还是双引号要看外层是单引号还是双引号)

首先来看几种标签里的值默认是什么类型:

<input type="text" name="name1" value="%{i am also a string}"><br>    

这是原生的html标签,value对应的引号里面会当成字符串来解析,不管加不加%{},最后输出到页面的都是字符串,不会当作ognl表达式来解析,所以最后显示到页面的就是%{i am also a string}


<s:textfield name="name" value="%{i am also a string}"></s:textfield>

这是struts2的一个标签,value默认会当字符串来解析,但我们可以加上%{}来把里面的类容变成OGNL表达式,所以这里什么都不显示


<s:property value="'test'"/><br>

这是struts2中的标签,value默认就是ognl表达式,这里我们加上了单引号,将它变为了字符串解析,所以这里会输出 test.


使用ognl表达式操作list集合和map集合:

struts2单选按钮:    //这种list的方式无法指定不同的key\value,这里key也是boy,value也是boy。
<s:radio list="{'boy','girl'}" name="sexstruts2" label="sex"></s:radio>
struts2单选按钮,用map的方式    //这种用map的方式成功解决了上面的问题,key是man,value是1
<s:radio list="#{'1':'man','0':'women'}" name="sexmap" lable="sex:"></s:radio>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值