OGNL的简单使用
来源:互联网 发布:阶乘java递归方法 编辑:程序博客网 时间:2024/06/10 23:30
1.什么是OGNL
OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个单独的开源项目。 Struts2框架使用OGNL作为默认的表达式语言。
2.OGNL功能
前提: OGNL是struts2整合的一个开源项目,所以在struts2中,要想使用OGNL表达式,必须使用Struts2标签库
2.1 OGNL方法的调用
jsp界面引用
<%@ taglib uri="/struts-tags" prefix="s" %>```
body中
<%--OGNL表达式:它可以访问普通方法 OGNL表达式必须写在struts2的标签中 s:property它就类似于jsp的表达式,把值输出到浏览器上 value属性中的内容不再是我们看到的字符串,它是一个OGNL表达式。必须知道 如果想让他变成一个普通的字符串,在值外面套上单引号 --%> <s:property value="OGNL-Expression"/> 这是一个OGNL表达式<br/> <s:property value="'OGNL-Expression'"/>这是一个普通的字符串<br/> <s:property value="'OGNL-Expression'.length()"/>使用普通字符串调用了获取长度的方法 <hr/> <%--OGNL访问静态属性: 访问静态属性的方式:@全类名@静态属性名称 --%> <s:property value="@java.lang.Integer@MAX_VALUE" /><br/> <%--OGNL访问静态方法: 访问静态方法的方式:@全类名@静态方法名 struts2的框架默认是禁用静态方法调用的。我们可以通过配置开启。 struts.ognl.allowStaticMethodAccess=false把它改为true --%> <s:property value="@java.lang.Math@random()" /> <hr/> <%--OGNL操作map和List --%> <%-- 使用的是s:radio的标签,创建list集合 {}就相当于创建了一个list集合 list属性中的取值是一个OGNL表达式 --%> <s:radio name="gender" list="{'男','女'}"></s:radio><br/> <%--使用s:radio创建一个map #{}表示创建一个map 1和0作为value给raido标签的value属性赋值 男和女作为key,显示到页面的内容 --%> <s:radio name="gender1" list="#{'1':'男','0':'女'}" />
当访问静态方法时,需要在struts.xml中进行配置
<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
3.EL表达式的自定义方法
1 编写一个普通类,提供一个实现功能的静态方法
package jxust.simon.web.function;public class MyFunction { public static String toUpperCase(String str){ return str.toUpperCase(); }}
2 在WEB-INF目录中创建一个扩展名为.tld的xml文件.文件不能放在classes和lib目录中
<?xml version="1.0" encoding="UTF-8"?><taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <tlib-version>1.0</tlib-version><!-- 指定标签库或方法库版本号 --> <short-name>myfn</short-name><!-- 使用的短名称。对应的是taglib指令中的prefix --> <!-- uri:把当前的方法库绑定到一个uri地址上,在该网址上不一定存在方法库 --> <uri>http://www.baidu.com/functions/myfunction</uri> <function><!-- 自定义方法 --> <name>touppoercase</name><!-- 方法的名称,是jsp页面上使用的名称 --> <!-- 指定执行的类 --> <function-class>jxust.simon.web.function.MyFunction</function-class> <!-- 指定执行的方法。方法名称必须和类中的方法名称保持一致 注意:当方法有参数和返回值时:参数和返回值必须写类全名(除了基本数据类型) --> <function-signature>java.lang.String toUpperCase( java.lang.String )</function-signature> </function></taglib>
3 在jsp页面中使用taglib指令引入外部的标签库/方法库
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://www.baidu.com/functions/myfunction" prefix="myfn" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>ONGL-Expression</title> </head> <body> <%--EL表达式 --%> afghdsf转成大写<br/> ${myfn:touppoercase("afhdsf")}<br> </body></html>
0 0
- OGNL的简单使用
- OGNL的简单使用
- OGNL简单使用
- OGNL 教程 OGNL简单特性模拟 OGNL简单的实现 OGNL入门 OGNL原理一角 OGNL学习
- ognl的%,#的使用
- ognl的使用
- struts2 OGNL # % $的使用
- OGNL表达式的使用
- OGNL表达式的使用
- OGNL表达式的使用
- OGNL的使用方式
- OGNL表达式的使用
- ognl中#,$,%的使用
- OGNL技术的使用
- Ognl表达式的使用
- OGNL特殊符号的使用
- OGNL表达式的使用
- ognl表达式的简单用法
- HTML<a>标签,<img>标签
- Bootstrap学习总结笔记(21)-- 基本插件之按钮
- ECMA5Script的函数function
- JAVA SE成长随笔之方法
- FDATOOL设计数字滤波器
- OGNL的简单使用
- 《第一行代码》复习遗漏重难点整理1-2章
- 第三十六讲项目5——有多少符号
- Redis-Java中使用
- JPA事务
- 控制执行流程
- 救济金发放的解决
- [Leetcode] 2. Add Two Numbers 解题报告
- Matlab编程序设计数字滤波器