ActionContext.getContext().getParameters()的取值

ActionContext.getContext().getParameters():一个学员问题的解答  

2012-11-12 15:12:05|  分类: 默认分类 |  标签:struts2   |举报 |字号 订阅

 
 
这是一个学员发给我的问题,虽然有点怪,貌似明白他在思考的问题。
照图贴上,说明一下action是struts2 Action, 还没讲到struts2,他自己学的,不错。

ActionContext.getContext().getParameters():一个学员问题的解答 - ppy2790@126 - IT AIR
 
从以上问题可以看出,他试图是想在Action中用Servlet中的request.getParament的方式来获取表单提交的值 ( 或URL传递的参数)。
 
那问题就是:在Action中如何获取HttpServletRequest对象:
 
1、第一种方法:
                ActionContext ctx = ActionContext.getContext();
Map request = (Map) ActionContext.getContext().get("request");
System.out.println(request.get("name"));
 
2、第二种方法:
                HttpServletRequest req1 = ServletActionContext.getRequest();
String n = req1.getParameter("name");
System.out.println("n------"+n);
 
3、第三种方法:
               HttpServletRequest req2 = (HttpServletRequest) ActionContext
.getContext()
.get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);
 
String sname = req2.getParameter("name");
System.out.println("req sname----" + sname);
 
以上第2、3种方法都可以获得HttpServletRequest,通过 getParameter方法获取值。
 
4、方法:Map<String, Object> params = ActionContext.getContext().getParameters();
                这个方法我也没用过。在Action中获取request一般用第一种方法。
                只能先做一些测试:  getParameters()可以通过map数据中key获得页面提交的参数名。理论上通过遍历key,可以获取value, (得到页面传来的值)。或者通过 params.get("name")得到name参数的值。但是输出看到的却是如,[Ljava.lang.String;@1e630208 。(一个String对象!)
               通过测试我发现: param.get("name")是一个String数组(为什么要返回数组不清楚,待查。可能的考虑是value应该保存一个object, 如果是一个对象,应该是有多个值的)。
那要用这种方法输出name的值,应该这样写:     System.out.println(((String[])params.get("name"))[0]);  输出即为传过来的name对应的值。OK!
 
  ActionContext.getContext().getParameters()具体待查,欢迎大家补充!
 
要取页面提交,传过来的值,还是用struts2提供的封装的方法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值