OGNL表达式的基本用法

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}"/>
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表达式'或者是"OGNL表达式"
  • 示例代码:
<s:property value="%{'OGNLExpression'}"/>  
<s:property value='%{"OGNLExpression1"}'/> 


<%--ONGL表达式转成字符串:
    可以单引号或者双引号套起来就变成字符串了
--%>
把ONGL表达式转成字符串:<s:property value="'abc'"/>
ONGL表达式转成字符串:<s:property value='"abc"'/>

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 在浏览器上输出一个单选性别:

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="性别"/> 

map集合

用 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="性别"/>

你可能感兴趣的:(struts2)