/*
* 模拟实现ognl表达式
*/
public class MyOgnlValue {
// =========用迭代的方式解决多参数问题========================//
public static Object getValue(String exp, MyContext root) throws Exception {
if (exp == null || exp.length() == 0) {
throw new Exception("表达式为空!");
}
String[] express = exp.split("\\.");
if (express.length == 1) {
return root.get(express);
} else {
Object o = root.get(express[0]);
int i = 1;
while (express.length != i) {
o=getValue(express[i], o);
i++;
}
return o;
}
}
public static Object getValue(String exp, Object o) throws Exception {
String md="";
Object obj=null;
if(exp.indexOf("[")>0)
{
md="get"+exp.substring(0,1).toUpperCase()+exp.substring(1,exp.indexOf("["));
Method method=o.getClass().getMethod(md, new Class[]{});
obj= method.invoke(o, new Object[]{});
if(obj instanceof List)
{
int j=Integer.parseInt(exp.substring(exp.indexOf("[")+1,exp.indexOf("]")));
return ((List) obj).get(j);
}
else if(obj instanceof Map)
{
String key=exp.split("\'")[1];
return ((Map) obj).get(key);
}
else if(obj.getClass().getName().indexOf("[L")==0 || obj.getClass().isArray())
{
int j=Integer.parseInt(exp.substring(exp.indexOf("[")+1,exp.indexOf("]")));
return Array.get(obj, j);
}
}
else
{
md="get"+exp.substring(0,1).toUpperCase()+exp.substring(1);
Method method=o.getClass().getMethod(md, new Class[]{});
obj=method.invoke(o, new Object[]{});
return obj;
}
return obj;
}
}
分享到:
相关推荐
本案例提供ognl使用详解,测试通过,只需解压放入自己WEB项目中,执行struts_ognl包内java文件即可(未提供jia包,若需要可以联系留言发至邮箱),若测试不好可以联系本人提供指导. Struts 2默认的表达式语言是OGNL...
基于WebWork核心的MVC开发与实践(ognl这一章)
java的Struts中的OGNL标签的使用,详细介绍,比较实用。
camel-ognl-1.6.4.jar, camel-ognl-2.8.1.jar, com.springsource.org.ognl-2.6.9.jar, com.springsource.org.ognl-sources-2.6.9.jar, ognl-2.5.1.jar, ognl-2.6.11.jar, ognl-2.6.3.jar, ognl-2.6.5.jar, ognl-...
NULL 博文链接:https://z-one.iteye.com/blog/1584602
OGNL百度百科OGNL百度百科OGNL百度百科OGNL百度百科OGNL百度百科OGNL百度百科
学习OGNL在Struts2中工作原理学习OGNL在Struts2中工作原理学习OGNL在Struts2中工作原理学习OGNL在Struts2中工作原理
ognl表达式 ognl表达式 ognl表达式 ognl表达式
ognl-3.0.4.jar ognl-3.0.4.jar
OGNL 最初是为了能够使用对象的属性名来建立 UI 组件 (component) 和 控制器 (controllers) 之间的联系,简单来说就是:视图 与 控制器 之间数据的联系。后来为了应付更加复杂的数据关系,Drew Davidson 发明了一个...
关于struts2中ognl的说明、原理及使用,对于初学者进阶是个不错的参考
OGNLjar包及源代码,供广大开发者学习使用
ognl ognl 文件
开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12...
标签:ognl、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
ognl源码 ognl源码 ognl源码 ognl源码 ognl源码
OGNL通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。 现在提供源代码,供大家分享
赠送jar包:ognl-3.1.12.jar; 赠送原API文档:ognl-3.1.12-javadoc.jar; 赠送源代码:ognl-3.1.12-sources.jar; 赠送Maven依赖信息文件:ognl-3.1.12.pom; 包含翻译后的API文档:ognl-3.1.12-javadoc-API文档-...
标签:ognl、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语...
ognl语言的使用。让我们通过使用ognl了解ognl标签使用的便利性。