Struts 2 --ONGL介绍
先了解一下OGNL的概念
OGNL的全名称Object Graph Navigation Language。全称为对象图导航语言,是一种表达式语言。使用这种表达式语言,你可以通过某种表达式语法,存取Java对象树中的任意属性、调用Java对象树的方法、同时能够自动实现必要的类型转化。
OGNL上下文实际上就是一个Map对象,由ognl.OgnlContext类表示。它里面可以存放很多个JavaBean对象。它有一个上下文根对象。
|
1
2
3
|
public String getSavePath() { return ServletActionContext.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
|
package cn.action;import cn.entity.User;import com.opensymphony.xwork2.ActionSupport;public class ExecuteAction extends ActionSupport{ private User user; private String okpwd; @Override public String execute() throws Exception{ 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()){ return INPUT; } return SUCCESS; } public User getUser() { return user; } public String getOkpwd() { return okpwd; } public void setUser(User user) { this.user = user; } public void setOkpwd(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"/> |
Struts 2 --ONGL介绍的更多相关文章
- <<< struts 的一系列介绍
struts有什么用? 以前使用servlet开发应用系统的人深深感受到在java代码中嵌入大量html代码是一件非常痛苦的事,于是sun推出了JSP,解决了java代码中嵌入html代码的问题.但是 ...
- Struts的ONGL
1.什么是OGNL OGNL它是Object Graphic Navigation Language(对象图导航语言)缩写, 它是一个开源项目. Struts2框架使用OGNL作为默认的表达式语 ...
- Struts 2 概念介绍
概念引入 Web层通常使用Servlet+jsp,现在使用Struts2来处理访问服务器请求 Service层 目前使用JavaBean Dao层目前使用Hibernate Spring是一个大的管家 ...
- struts2:struts.properties配置文件介绍及常量加载顺序
1. 背景 struts2框架中有两个核心配置文件,其中struts.xml文件主要负责管理应用中的action映射,以及该action包含的result定义等.除此之外,struts2框架还包括一个 ...
- S2-020 Struts ClassLoader Manipulation安全限制绕过(CVE-2014-0094)
受影响系统: Apache Group Struts 2.x 描述: ----------------------------------------------------------------- ...
- Struct2 基础介绍
前面花一周时间学习了servlet+jsp+mysql, 并且简单实现了登录注册等操作.对Servlet应用有了基础了解! 关于Struct2这个经常听说,但是自己没有用过.今天在这学习总结下,目的是 ...
- Struts框架详解
1.Struts应用框架介绍 (1)框架 框架最简单的形式是指已开发过并已测试过的软件的程序块,这些程序块可以在多个软件开发工程中重用.框架提供了一个概括的体系结构模版,可以用这个模板来构建特定领域中 ...
- Struts1.3——Struts标签
1.struts标签的介绍 Struts框架提供了一组非常丰富的框架组件,同时也提供了一组标签库用于和这些组件交互,主要介绍以下三类: html标签 bean标签 logic标签 2.Html标签库 ...
- Struts framework
Struts功能详解——ActionMapping对象 Struts旅程(一)Struts简介和原理 实例讲解DispatchAction和LookupDispatchAction DispatchA ...
随机推荐
- 有关Django的smallDemo
注: 电脑为Mac,Python解释器为3.5.4 数据库使用的是pymysql模块代替mysqldb 功能: 运行服务器,在login登录界面输入用户名和密码,post到服务器, 通过数据库判断用户 ...
- 两数最大公约数 GCD
原理辗转相除法. public int gcd(int i, int j) { if (i == 0 || j == 0) { return 0; } int a = 0, b = 0; if (i ...
- Python pip 虚拟环境使用
安装: pip install virtualenv 使用,创建虚拟环境: cd project_dir virtualenv venv #venv为虚拟环境 目录名自定义 virtualenv -p ...
- 原生JS实现滑动验证功能
一般很多网站都有滑动验证的功能,简单滑动验证的原理如下图所示: 主要理解思想就行 图中的代码可能和实际写的有所不同 HTML和CSS也可根据仔细的喜好就行修改 完整代码: <!DOCTYPE h ...
- CentOS7安装Airflow
实验环境: centos7python3.6 安装配置: 1.看看是否有gcc,没有的话需要进行安装: yum install gcc (后续安装airflow如果不成功,可以再次执行,它会更新包) ...
- P2597 [ZJOI2012]灾难——拓扑,倍增,LCA
最近想学支配树,但是基础还是要打好了的: P2597 [ZJOI2012]灾难 这道题是根据食物链链接出一个有向图的关系,求一个物种的灭绝会连带几种物种的灭绝: 求得就是一个点能支配几个点: 如果一个 ...
- 编程用sort进行排序,然后从最后一个元素开始判断,去重
a=[,,,,,,,,,,,,,,] a.sort() last=a[-] ,-,-): if last==a[i]: del a[i] else: last=a[i] print(a)
- vue 传参props里面为什么要带type,还有default?
这个是子组件啦 ,写type的意思是swiperDate传过来的数据类型是数组,default就是表示不传默认返回的[ ],空数组. 这种就是表示传的数据类型是number,不传默认是0.
- 怎么样使用vuex
https://www.cnblogs.com/songrimin/p/7815850.html
- 【2018.07.29】(深度优先搜索/回溯)学习DFS算法小记
参考网站:https://blog.csdn.net/ldx19980108/article/details/76324307 这个网站里有动态图给我们体现BFS和DFS的区别:https://www ...