OHNL
先了解一下OGNL的概念
OGNL的全名称Object Graph Navigation Language。全称为对象图导航语言,是一种表达式语言。使用这种表达式语言,你可以通过某种表达式语法,存取Java对象树中的任意属性、调用Java对象树的方法、同时能够自动实现必要的类型转化。
OGNL上下文实际上就是一个Map对象,由ognl.OgnlContext类表示。它里面可以存放很多个JavaBean对象。它有一个上下文根对象。
| 1 2 3 | publicString getSavePath() {     returnServletActionContext.getServletContext().getRealPath(savePath);             } | 
2.用于过滤和投影(projecting)集合
| 1 | persons.{?#this.name=='pla1'}.{age}[0]。 | 
3.用于构造map。
| 1 | #{'foo1':'bar1', 'foo2':'bar2'} | 
%:
%符号的用途是在标志的属性为字符串类型时,计算机OGNL表达式
$:主要有两种用途
1.在国际化资源中,引用OGNL表达式,例如国际化资源文件中的代码:reg.agerange=国际化资源信息:年龄必须在${min}同${max}之间。
2.在Struts2框架的配置文件中引用OGNL表达式.例如:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | <validators>     <field name="user.username">         <field-validator type="requiredstring">             <param name="trim">true</param>             <message>用户名不能为空</message>         </field-validator>         <field-validator type="stringlength">             <param name="maxLength">10</param>             <param name="minLength">6</param>             <message>用户名长度必须在${minLength}和${maxLength}之间</message>         </field-validator>     </field> </validators> | 
action类ExecuteAction.java:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | packagecn.action;  importcn.entity.User;  importcom.opensymphony.xwork2.ActionSupport;  publicclassExecuteAction extendsActionSupport{     privateUser user;     privateString okpwd;          @Override    publicString execute() throwsException{         if(user.getUsername().length()==0){             addFieldError("username", "用户名不能为空");         }         if(user.getUserpwd().length()==0){             addFieldError("userpwd", "密码不能为空");         }         if(!user.getUserpwd().equals(okpwd)){             addFieldError("userpwd", "两次密码必须一致");         }         //捕获错误信息   返回input         if(this.hasFieldErrors()){             returnINPUT;         }         returnSUCCESS;     }     publicUser getUser() {         returnuser;     }     publicString getOkpwd() {         returnokpwd;     }     publicvoidsetUser(User user) {         this.user = user;     }     publicvoidsetOkpwd(String okpwd) {         this.okpwd = okpwd;     } } | 
总结OGNL的使用方法
访问属性
| 1 2 3 4 | <s:textfield name="user.username"label="用户名"></s:textfield>     <br/>     <s:textfield name="user.userpwd"label="密码"></s:textfield>     <br/> | 
访问方法
| 1 | 调用值栈中对象的普通方法:<s:property value="user.get()"/><br> | 
访问构造方法
| 1 | 调用普通类的构造方法:<s:property value="new struts.vo.Student('小明' , '男' , 3 , 25).username"/> | 
OHNL的更多相关文章
- 会务准备期间材料准备工作具体实施总结 ----(vim技巧应用, python信息提取与整合, microsoft word格式调整批量化)
		会务准备期间材料准备工作具体实施总结(vim, python, microsoft word) span.kw { color: #007020; font-weight: bold; } code ... 
随机推荐
- LDA的Python实现源码
			#-*- coding:utf-8 -*- import logging import logging.config import ConfigParser import numpy as np im ... 
- HTML与CSS
			HTML中DTD是什么?是一套关于标记符的语法规则.DTD是一种保证html格式正确最有效的方法.一个DTD文档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则. ... 
- CXF调用webservice超时设置
			JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setServiceClass(Service1Soap.cl ... 
- cloudera learning6:Hadoop Security
			保证Hadoop安全的最有效方法是对cluster进行隔离(isolation,常用方法是把大集群划分若干个小集群). Hadoop安全措施的目的是防止好的人不小心做了坏的事,而非防止坏人坏事. Ke ... 
- UNIX中的文件类型
			Unix的文件类型信息包含在stat结构的st_mode成员中可以用宏确定文件类型: 普通文件(S_ISREG()):包含某种形式数据的常用文件类型 目录文件(S_ISDIR()):这种文件包含其他文 ... 
- 奥威软件Speed-BI荣获2016年度中国大数据最佳云平台奖
			(原文转自:http://www.powerbi.com.cn/page110?article_id=210) 2016年12月16日,“科技原力觉醒,引领创新巅峰”—2016创新影响力年会暨国家产业 ... 
- ndt histogram_direction
			histogram_direction N_FLAT_BINS=40; dlong = pi*(3-sqrt(5.0)); % ~2.39996323 dz = 2.0/N_FLAT_BINS; lo ... 
- linux scp 远程复制文件
			1.从本机复制文件到远程scp 文件名 远程计算机用户名@远程计算机的ip:远程计算机存放该文件的路径2.从远程复制文件到本机:scp 远程计算机用户名@远程计算机ip:文件名 存放该文件的本机路径3 ... 
- jQuery 菜单
- php 截取代码方法(140个字后的。)
			//截取摘要public static function mbsubstr($str){ $strleng = mb_strlen($str,"utf8"); $mbs ... 
