OGNL表达式的基本用法
借助 s:property标签输出内容到浏览器
s:property的作用
- 写法:
<%--导入标签库--%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%--要想使用 OGNL 表达式,需要借助 struts2 的标签--%>
<s:property value="OGNLExpression"/>
作用:
- 把value 属性取值所对应的内容输出到浏览器上。
- 注意:它不是把value的值输出到浏览器上。
属性:
value:取值是一个OGNL表达式。
运行结果:
此时浏览器不会有任何内容显示
- 原因
这句话中有【OGNLExpression】
这几个字,这几个字就说明它要去某个地方
找数据,那自然是找到了就显示,找不到就什么都不显示了
OGNL的写法
- 完整写法
<%--
OGNL表达式的完整语法
--%>
OGNL表达式的完整语法:<s:property value="%{abc}"/><br>
OGNL表达式的完整语法:<s:property value="%{'abc'}"/><br>
OGNL表达式的完整语法:<s:property value="%{'abc'.length()}"/><br>
- 简单写法
<%--
OGNL表达式的简单语法
--%>
OGNL表达式的简单语法:<s:property value="abc"/><br>
OGNL表达式的简单语法:<s:property value="'abc'"/><br>
OGNL表达式的简单语法:<s:property value="'abc'.length()"/><br>
把一个 OGNL表达式看成字符串的方式
把一个OGNL 表达式看成是字符串的方式是:
%{'OGNL表达式'}或者是%{"OGNL表达式"}
到底是使用单引号还是双引号,是由外层引号决定的。以上两种都可以实现。
我们也可以简写,就是把外面的%{}去掉,直接用引号括住表达式。
'OGNL表达式'或者是"OGNL表达式"
- 示例代码:
<s:property value="%{'OGNLExpression'}"/>
<s:property value='%{"OGNLExpression1"}'/>
<%--
把ONGL表达式转成字符串:
可以单引号或者双引号套起来就变成字符串了
--%>
把ONGL表达式转成字符串:<s:property value="'abc'"/><br>
把ONGL表达式转成字符串:<s:property value='"abc"'/><br>
ONGL表达式调用普通方法
OGNL表达式的强大之处在于它可以让我们在表达式中访问对象的方法,例如下面的代码:
长度:<s:property value="'OGNLExpression'.length()"/><br/>
转大写:<s:property value="'OGNLExpression'.toUpperCase()"/><br/>
分隔:<s:property value="'OGNLExpression'.split('E')"/><br/>
OGNL表达式访问静态属性和静态方法
OGNL表达式还支持访问静态成员,这其中包括静态属性和静态方法, 但是必须按照提供的格式编写,
格式是:@包名.包名…类名@静态属性名称。
这其中…的含义表示有几级包,就写几个包名。
- 静态属性
示例代码如下:
int 的最大值:<s:property value="@java.lang.Integer@MAX_VALUE"/>
- 静态方法
OGNL 表达式访问静态方法,需要开启对静态方法访问的支持。
struts2 框架默认不支持 OGNL 表达式的静态方法调用,开启的方式如下:
<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
示例代码如下:
随机数:<s:property value="@java.lang.Math@random()"/>
OGNL表达式创建集合
list集合
用 HTML 在浏览器上输出一个单选性别:
<input type="radio" name="gender" value="男"/>男
<input type="radio" name="gender" value="女"/>女
<br/>
用 Struts2 的单选按钮标签输出一个单选
<%--s:radio 用于在浏览器上显示一个单选按钮
list 属性取值是一个 OGNL 表达式
{} 相当于: List list = new ArrayList();
{'男','女'} 相当于: list.add("男");list.add("女");
--%>
<s:radio name="gender" list="{'男','女'}" label="性别"/>
map集合
用 HTML 在浏览器上输出一个单选性别:Map 结构
<input type="radio" name="gender" value="male"/>男
<input type="radio" name="gender" value="female"/>女
<br/>
#{}就表示创建了一个 Map
<%-- #{}就表示创建了一个 Map
里面的写法
#{'key':'value','key':'value'......}
--%>
<s:radio name="gender" list="#{'male':'男','female':'女'}" label="性别"/>