<%--导入标签库--%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%--要想使用 OGNL 表达式,需要借助 struts2 的标签--%>
<s:property value="OGNLExpression"/>
作用:
属性:
value:取值是一个OGNL表达式。
运行结果:
此时浏览器不会有任何内容显示
<%--
OGNL表达式的完整语法
--%>
OGNL表达式的完整语法:<s:property value="%{abc}"/>
OGNL表达式的完整语法:<s:property value="%{'abc'}"/>
OGNL表达式的完整语法:<s:property value="%{'abc'.length()}"/>
<%--
OGNL表达式的简单语法
--%>
OGNL表达式的简单语法:<s:property value="abc"/>
OGNL表达式的简单语法:<s:property value="'abc'"/>
OGNL表达式的简单语法:<s:property value="'abc'.length()"/>
把一个OGNL 表达式看成是字符串的方式是:
%{'OGNL表达式'}或者是%{"OGNL表达式"}
到底是使用单引号还是双引号,是由外层引号决定的。以上两种都可以实现。
我们也可以简写,就是把外面的%{}去掉,直接用引号括住表达式。
'OGNL表达式'或者是"OGNL表达式"
<s:property value="%{'OGNLExpression'}"/>
<s:property value='%{"OGNLExpression1"}'/>
<%--
把ONGL表达式转成字符串:
可以单引号或者双引号套起来就变成字符串了
--%>
把ONGL表达式转成字符串:<s:property value="'abc'"/>
把ONGL表达式转成字符串:<s:property value='"abc"'/>
OGNL表达式的强大之处在于它可以让我们在表达式中访问对象的方法,例如下面的代码:
长度:<s:property value="'OGNLExpression'.length()"/><br/>
转大写:<s:property value="'OGNLExpression'.toUpperCase()"/><br/>
分隔:<s:property value="'OGNLExpression'.split('E')"/><br/>
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()"/>
用 HTML 在浏览器上输出一个单选性别:
type="radio" name="gender" value="男"/>男
type="radio" name="gender" value="女"/>女
用 Struts2 的单选按钮标签输出一个单选
<%--s:radio 用于在浏览器上显示一个单选按钮
list 属性取值是一个 OGNL 表达式
{} 相当于: List list = new ArrayList();
{'男','女'} 相当于: list.add("男");list.add("女");
--%>
<s:radio name="gender" list="{'男','女'}" label="性别"/>
用 HTML 在浏览器上输出一个单选性别:Map 结构
type="radio" name="gender" value="male"/>男
type="radio" name="gender" value="female"/>女
#{}就表示创建了一个 Map
<%-- #{}就表示创建了一个 Map
里面的写法
#{'key':'value','key':'value'......}
--%>
<s:radio name="gender" list="#{'male':'男','female':'女'}" label="性别"/>