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

OGNL表达式的基本用法相关推荐

  1. ognl表达式的简单用法

    首先我们一起来看一下OGNL中的#.%和$符号. 一.OGNL中的#.%和$符号 #.%和$符号在OGNL表达式中经常出现,而这三种符号也是开发者不容易掌握和理解的部分.在这里我们简单介绍它们的相应用 ...

  2. OGNL表达式的基本语法和用法

    一.OGNL中的#.%和$符号 #.%和$符号在OGNL表达式中经常出现,而这三种符号也是开发者不容易掌握和理解的部分.在这里我们简单介绍它们的相应用途. 1.#符号的三种用法 1)访问非根对象属性, ...

  3. OGNL表达式的用法

    OGNL的用法 OGNL是通常要结合Struts 2的标志一起使用,如<s:property value="xx" />等.大家经常遇到的问题是#.%和$这三个符号的使 ...

  4. 深入理解Struts2中的OGNL表达式

    Struts 2中的表达式语言 Struts 2支持以下几种表达式语言: OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言: JST ...

  5. 为了熟练掌握动态SQL你必须要知道Mybatis中的OGNL表达式

    前言 OGNL是个什么东西?很多刚入门Java的同学会有点陌生.但是在Structs流行的时代OGNL可是必会的数据渲染技术.它全称Object Graph Navigation Language,作 ...

  6. struts2教程(9)--OGNL表达式使用

    OGNL表示式使用和值栈 一.介绍 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目. Struts2框架使用OGNL作为默认的 ...

  7. java el ognl_el表达式跟ognl表达式的区别

    EL表达式: >>单纯在jsp页面中出现,是在四个作用域中取值,page,request,session,application. >>如果在struts环境中,它除了有在上面 ...

  8. OGNL表达式struts2标签“%,#,$”

    http://www.blogjava.net/parable-myth/archive/2010/10/28/336353.html 一.什么是OGNL,有什么特点? OGNL(Object-Gra ...

  9. Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用

    来自:http://blog.csdn.net/love_you_99/article/details/8184797 一 介绍 1.Struts2的作用 Struts2标签库提供了主题.模板支持,极 ...

最新文章

  1. Docker基础之九: 管理容器的数据
  2. 【从零学习openCV】opecv操作像素
  3. 边缘和智能,是谁在借谁上位?
  4. MySQL事务控制语句
  5. 如何在linux(ubuntu)的wine环境下开启source insight的tabsihost(或tabsiplus)
  6. mysql本地连接错误解决办法
  7. AndroidManifest.xml中的android:name是否带.的区别
  8. 基于 opencv图像去噪
  9. postfix配置参数
  10. 网页右下角弹出的图片无法显示
  11. iOS开发下载文件速度计算
  12. 最新服务器CPUe5,看这里!2019 至强 Xeon E5 服务器系列 CPU 天梯图分享
  13. WMI服务不存在或标记为删除解决方案
  14. android 屏蔽电源键,home键
  15. 请不要“妖魔化”外包
  16. 四、搭建第一个直播系统
  17. Docker下安装MCR windows镜像安装Matlab 静默安装MCR silent install 无交互安装 无Gui安装 控制台安装
  18. boost install
  19. 2023年中高级前端养成指南-需要关注和学习的13大类80余个前端技术栈与前端趋势-看这篇就够了系列
  20. 云邮箱登陆,如何登录企业邮箱?电子邮箱如何登陆?

热门文章

  1. zynq IRQ_P2F ----ps中断pl
  2. vSphere 虚拟化基础概念讲解与环境构建视频教程(笔记)
  3. 一步一步教你写股票走势图——分时图二(自定义xy轴)
  4. 根据指定字母,顺序输出若干相邻字母 C语言
  5. 户籍不在本市并已申请基本养老保险或基本医疗保险关系转移手续销户提取业务办理指南(试行)...
  6. 班级综合管理系统(带文档)
  7. 关于支付宝小程序使用wxbarcode需要生成条形码的源码修改
  8. [CDH]企业数据仓库数据管理平台CDH6.2.1离线安装记录
  9. JS截取URL中最后一个斜杆前(后)的内容
  10. 【从零开始游戏开发】Unity3D AssetBundle资源加载和封装 | 全面总结 | 建议收藏