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类型转换相关推荐

  1. struts2的OGNL表达式理解(一)

    一,什么是OGNL表达式     OGNL是Object-Graph Navigation Language(对象图导航语言)的缩写,它是一种功能强大的表达式语言(Expression Languag ...

  2. WEB Struts2 中OGNL的用法

    2019独角兽企业重金招聘Python工程师标准>>> User对象属性获取 如User中有username和password字段 获取username属性<s:propert ...

  3. Struts2中OGNL,valueStack,stackContext的学习

    http://jwx0925.iteye.com/blog/630335 [/color]学习Struts2,一直不明白表单中的值是怎么传给Action的,上网查了些资料,基本了解了!下面基本是从几个 ...

  4. Struts2中的类型转换

    1.     Struts2中的类型转换 我们知道通过HTTP提交到后台的数据,都是字符串的形式,而我们需要的数据类型当然不只字符串类型一种.所以,我们需要类型转换! 在Struts2中,类型转换的概 ...

  5. Struts2的OGNL标签详解

    一.Struts2可以将所有标签分成3类: UI标签:主要用于生成HTML元素的标签. 非UI标签:主要用于数据库访问,逻辑控制等标签. Ajax标签:用于Ajax支持的标签. 对于UI标签,则有可以 ...

  6. Struts2的OGNL表达式语言

    支持Struts2的OGNL表达式语言(2009-04-25 01:11:36) <script></script> 标签:struts2 ognl it  分类:Spring ...

  7. 深入分析JavaWeb Item48 -- Struts2中OGNL表达式与ValueStack

    一.OGNL表达式 1.OGNL表达式介绍 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目. Struts2框架使用OGNL作 ...

  8. struts2.x自定义类型转换

    struts2的类型转换是基于OGNL(对象图像导航语言) 1   OGNL里面有一个接口TypeConverter,该接口有一个方法convertValue,convertValue该方法很复杂,里 ...

  9. jQuery发送含有数组参数的ajax请求以及后台Struts2的OGNL解析错误

    当使用jquery1.3以上版本时,进行ajax参数传值时,会出现以下的一个错误: ognl.ExpressionSyntaxException: Malformed OGNL expression: ...

  10. struts2之OGNL用法

    浅析OGNL OGNL是Object-GraphNavigation Language的缩写,是一种功能强大的表达式语言 通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对 ...

最新文章

  1. 使用t-SNE算法对数据进行降维并可视化实战,与KernalPCA、LLE对比降维可视化的效果
  2. 关于Jenkins部署代码权限三种方案
  3. 当年只会C# 所以写C++就成这样了! log4cplus - log4net
  4. HTML页面引入另一个HTML页面,比如各个页面引入通用的网站头部、尾部、导航栏
  5. 帝国cms调用相关文章若没有则调取最新文章
  6. 自定义notebook扩展插件_Anaconda3中的Jupyter notebook添加扩展插件
  7. 荣耀9“致敬”小米6?这是今年手机界最大的笑话!
  8. PHP 败给 Python 的十大理由
  9. 苹果iOS手机暗藏间谍软件的揭秘者:扎徳尔斯基
  10. 实验十四:雨滴传感器实验
  11. Linux上的oracle11g安装(提供安装包链接)以及其他问题注解
  12. 360 se html document 广告,广告拦截 - 360极速浏览器
  13. jQuery 任意公历转为农历
  14. A段架构设计_隽语集(Business Thinking _1201)
  15. 几种常用数据库的区别
  16. 速读区块链十年历史 2010年-2020年回顾
  17. Linux系统文件加密与解密应用
  18. 如何区分电梯卡为id卡ic卡_UID卡是什么?和IC卡、ID卡有什么区别?
  19. 微信公众平台开发[1] —— 获取用户Openid及个人信息
  20. Webpack5快速入门 (二) CSS相关loader的使用及兼容性处理 手把手带你打开前端工程化的大门

热门文章

  1. Spark:性能调优
  2. 按照《权威指南》的例子求最低温度并且修改默认调度器为FairScheduler
  3. 搭建html5的,HTML5 - 搭建移动Web应用
  4. 计算机网络网络层之互联网控制报文协议(ICMP)
  5. 防火墙状态检测及会话表技术
  6. iOS 网络/本地 图片 按自定义比例缩放 不失真 方法
  7. dtoj#4258. 铃铛计数问题
  8. Linux学习(第十七周)
  9. Session Cookie 之我见
  10. 636. 132 模式