码迷,mamicode.com
首页 > 其他好文 > 详细

struts2入门之OGNL

时间:2017-06-25 13:47:30      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:port   声明变量   doctype   开发   prefix   blog   属性   val   exe   

OGNL是一个表达式语言,可以和EL表达式做类比,至于OGNL和struts2的关系,我想说的是,它们之间根本没有关系。之所以二者经常一起提起,是因为二者经常会一起用,struts2提供的标签中的属性里可以写ognl表达式,用于获取数据,这些数据既可以从域对象中获取,也可以从值栈中获取,这取决于你的数据是放在域对象中还是值栈中,下面贴出jsp页面获取值栈中的数据对象集合:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2 pageEncoding="UTF-8"%>
 3 <%@ taglib uri="/struts-tags" prefix="s" %>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>Insert title here</title>
 9 </head>
10 <body>
11 <p>action中定义变量并生成get方法,来获取值栈中的数据(对象)</p>
12 <s:property value="user.userName"/>
13 <s:property value="user.passWord"/>
14 <p>action中定义变量并生成get方法,来获取值栈中的数据(list集合)</p>
15 <s:iterator value="list">
16 <s:property value="userName"/>
17 <s:property value="passWord"/>
18 </s:iterator>
19 <p>action中定义变量并生成get方法,来获取值栈中的数据(list集合另一种方式)</p>
20 <s:iterator value="list" var="user">
21 <s:property value="#user.userName"/>
22 <s:property value="#user.passWord"/>
23 </s:iterator>
24 </body>
25 </html>

 

我的action代码如下,提供了存储对象集合到值栈中:

 1 package com.cczhao.struts.valuestack;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 
 6 import com.cczhao.struts.entity.User;
 7 import com.opensymphony.xwork2.ActionContext;
 8 import com.opensymphony.xwork2.ActionSupport;
 9 import com.opensymphony.xwork2.util.ValueStack;
10 
11 /**
12  * 
13  * 功能: TODO 往值栈中存放数据.<br/>
14  * date: 2017年6月25日 下午12:05:55 <br/>
15  *
16  * @author cczhao
17  * @version
18  * @since JDK 1.8
19  */
20 public class ValueStack3Action extends ActionSupport {
21     private static final long serialVersionUID = 1L;
22     private User user = new User();
23     private User user2 = new User();
24     private List<User> list = new ArrayList<>();
25 
26     public List<User> getList() {
27         return list;
28     }
29 
30     public User getUser2() {
31         return user2;
32     }
33 
34     public User getUser() {
35         return user;
36     }
37 
38     // 方式3:通过在action中定义变量,并生成get方法
39     public String execute() throws Exception {
40         ActionContext context = ActionContext.getContext();
41         ValueStack stack = context.getValueStack();
42         
43         user.setPassWord("123456");
44         user.setUserName("曾柔");
45         user2.setPassWord("111");
46         user2.setUserName("双儿");
47         list.add(user);
48         list.add(user2);
49         return "success";
50     }
51 }

 

OGNL表达式语言结合struts2的标签进行使用能很好的用于获取后台的实体数据,上面的action只显示了一种往值栈中存放数据,然后在jsp中利用struts2标签+ognl来获取数据,其实往值栈中存放数据还有两种方式:set方式和push方式。但这两种方式占用空间较大,但是灵活度高点,可以斟酌使用,但在实际开发中我觉的在action中声明变量并生成get方法,这种方式往值栈中存放数据的方式更常用一点,因为平时前后台交互的时候大多是对象在交互,且可能是对象集合。

刚看了这么多,以后如果有新的认识会继续更新。

--------------------------------------------分割线---------------------------------------------

 

struts2入门之OGNL

标签:port   声明变量   doctype   开发   prefix   blog   属性   val   exe   

原文地址:http://www.cnblogs.com/ZT-SummerRain/p/7076607.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!