Struts2之OGNL类型转换
OGNL表达式允许开发者无须任何特殊处理,只需要在定义表单域时使用OGNL表达式来定义表单域的name属性。这个时候的表单域的name的属性不是一般的值。例如,定义个User的对象,那么表单域中namer 属性可能是name.name和name.pass形式,这种就是OGNL的表达式。
1.普通例子
1) 定义:LoginAction.java
public class LoginAction extends ActionSupport
{// 使用User类型的成员变量封装请求参数private User user;private String tip;// user的setter和getter方法public void setUser(User user){this.user = user;}public User getUser(){return this.user;}public String execute() throws Exception{// 通过user的name属性和pass属性来判断控制逻辑if (getUser().getName().equals("owen")&& getUser().getPass().equals("owen") ){addActionMessage("登录成功");return SUCCESS;}addActionMessage("登录失败!!");return ERROR;}
}
2) input.jsp
<body>
<h3>利用OGNL的进行类型转换</h3>
<s:form action="login"><!-- 该表单域封装的请求参数名为user.name --><s:textfield name="user.name" label="用户名"/><!-- 该表单域封装的请求参数名为user.pass --><s:textfield name="user.pass" label="密码"/><tr><td colspan="2"><s:submit value="转换" theme="simple"/><s:reset value="重填" theme="simple"/></td></tr>
</s:form>
</body>
2. MAP的例子
1) LoginAction.java
public class LoginAction extends ActionSupport
{// Action类里包含一个Map类型的成员变量// Map的value类型为User类型private Map<String , User> users;// users的setter和getter方法public void setUsers(Map<String , User> users){this.users = users;}public Map<String , User> getUsers(){return this.users;}public String execute() throws Exception{// 在控制台输出Struts 2封装产生的Map对象System.out.println(getUsers());// 根据Map集合中key为one的User实例来决定控制逻辑if (getUsers().get("one").getName().equals("owen")&& getUsers().get("one").getPass().equals("owen") ){addActionMessage("登录成功!");return SUCCESS;}addActionMessage("登录失败!!");return ERROR;}
}
2) JSP界面
<body>
<h3>直接封装成Map</h3>
<s:form action="login"><s:textfield name="users['one'].name" label="第one个用户名"/><s:textfield name="users['one'].pass" label="第one个密码"/><s:textfield name="users['two'].name" label="第two个用户名"/><s:textfield name="users['two'].pass" label="第two个密码"/><tr><td colspan="2"><s:submit value="转换" theme="simple"/><s:reset value="重填" theme="simple"/></td></tr>
</s:form>
</body>
3. List的例子
1) LoginAction.java
public class LoginAction extends ActionSupport
{// Action类里包含一个List类型的成员变量// List集合的元素为User类型private List<User> users;// users属性的setter和getter方法public void setUsers(List<User> users){this.users = users;}public List<User> getUsers(){return this.users;}public String execute() throws Exception{// 在控制台输出Struts 2封装产生的List对象System.out.println(getUsers());// users属性的第一个User实例来决定控制逻辑if (getUsers().get(0).getName().equals("owen")&& getUsers().get(0).getPass().equals("owen") ){addActionMessage("登录成功!");return SUCCESS;}addActionMessage("登录失败!!");return ERROR;}
}
2) JSP界面
<body>
<h3>直接封装成List</h3>
<s:form action="login"><s:textfield name="users[0].name" label="第一个用户名"/><s:textfield name="users[0].pass" label="第一个密码"/><s:textfield name="users[1].name" label="第二个用户名"/><s:textfield name="users[1].pass" label="第二个密码"/><tr><td colspan="2"><s:submit value="转换" theme="simple"/><s:reset value="重填" theme="simple"/></td></tr>
</s:form>
</body>
3) 获取方法
<body><s:actionmessage/>
第一个User实例的用户名为:<s:property value="users[0].name"/><br/>
第一个User实例的密码为:<s:property value="users[0].pass"/><br/>
第二个User实例的用户名为:<s:property value="users[1].name"/><br/>
第二个User实例的密码为:<s:property value="users[1].pass"/><br/>
</body>
Struts2之OGNL类型转换相关推荐
- struts2的OGNL表达式理解(一)
一,什么是OGNL表达式 OGNL是Object-Graph Navigation Language(对象图导航语言)的缩写,它是一种功能强大的表达式语言(Expression Languag ...
- WEB Struts2 中OGNL的用法
2019独角兽企业重金招聘Python工程师标准>>> User对象属性获取 如User中有username和password字段 获取username属性<s:propert ...
- Struts2中OGNL,valueStack,stackContext的学习
http://jwx0925.iteye.com/blog/630335 [/color]学习Struts2,一直不明白表单中的值是怎么传给Action的,上网查了些资料,基本了解了!下面基本是从几个 ...
- Struts2中的类型转换
1. Struts2中的类型转换 我们知道通过HTTP提交到后台的数据,都是字符串的形式,而我们需要的数据类型当然不只字符串类型一种.所以,我们需要类型转换! 在Struts2中,类型转换的概 ...
- Struts2的OGNL标签详解
一.Struts2可以将所有标签分成3类: UI标签:主要用于生成HTML元素的标签. 非UI标签:主要用于数据库访问,逻辑控制等标签. Ajax标签:用于Ajax支持的标签. 对于UI标签,则有可以 ...
- Struts2的OGNL表达式语言
支持Struts2的OGNL表达式语言(2009-04-25 01:11:36) <script></script> 标签:struts2 ognl it 分类:Spring ...
- 深入分析JavaWeb Item48 -- Struts2中OGNL表达式与ValueStack
一.OGNL表达式 1.OGNL表达式介绍 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目. Struts2框架使用OGNL作 ...
- struts2.x自定义类型转换
struts2的类型转换是基于OGNL(对象图像导航语言) 1 OGNL里面有一个接口TypeConverter,该接口有一个方法convertValue,convertValue该方法很复杂,里 ...
- jQuery发送含有数组参数的ajax请求以及后台Struts2的OGNL解析错误
当使用jquery1.3以上版本时,进行ajax参数传值时,会出现以下的一个错误: ognl.ExpressionSyntaxException: Malformed OGNL expression: ...
- struts2之OGNL用法
浅析OGNL OGNL是Object-GraphNavigation Language的缩写,是一种功能强大的表达式语言 通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对 ...
最新文章
- 使用t-SNE算法对数据进行降维并可视化实战,与KernalPCA、LLE对比降维可视化的效果
- 关于Jenkins部署代码权限三种方案
- 当年只会C# 所以写C++就成这样了! log4cplus - log4net
- HTML页面引入另一个HTML页面,比如各个页面引入通用的网站头部、尾部、导航栏
- 帝国cms调用相关文章若没有则调取最新文章
- 自定义notebook扩展插件_Anaconda3中的Jupyter notebook添加扩展插件
- 荣耀9“致敬”小米6?这是今年手机界最大的笑话!
- PHP 败给 Python 的十大理由
- 苹果iOS手机暗藏间谍软件的揭秘者:扎徳尔斯基
- 实验十四:雨滴传感器实验
- Linux上的oracle11g安装(提供安装包链接)以及其他问题注解
- 360 se html document 广告,广告拦截 - 360极速浏览器
- jQuery 任意公历转为农历
- A段架构设计_隽语集(Business Thinking _1201)
- 几种常用数据库的区别
- 速读区块链十年历史 2010年-2020年回顾
- Linux系统文件加密与解密应用
- 如何区分电梯卡为id卡ic卡_UID卡是什么?和IC卡、ID卡有什么区别?
- 微信公众平台开发[1] —— 获取用户Openid及个人信息
- Webpack5快速入门 (二) CSS相关loader的使用及兼容性处理 手把手带你打开前端工程化的大门