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

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

 
 
这是一个学员发给我的问题,虽然有点怪,貌似明白他在思考的问题。

照图贴上,说明一下action是struts2 Action, 还没讲到struts2,他自己学的,不错。

从以上问题可以看出,他试图是想在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提供的封装的方法。

【转载】关于ActionContext.getContext().getParameters()获值问题的更多相关文章

  1. ActionContext.getContext().getSession()

    ActionContext.getContext().getSession() 获取的是session,然后用put存入相应的值,只要在session有效状态下,这个值一直可用 ActionConte ...

  2. <s:if>标签与ActionContext.getContext().getSession()

    今天在做<s:if>标签中的属性值从 ActionContext.getContext().getSession().put("WW_TRANS_I18N_LOCALE" ...

  3. ValueStack与ContentMap (ActionContext.getContext().getValueStack().set())

    在方法 <action name="zilei" class="dtreeAction" method="zilei">   & ...

  4. 关于ActionContext.getContext()的用法心得

    转: 为了避免与Servlet API耦合在一起,方便Action类做单元测试,Struts 2对HttpServletRequest.HttpSession和ServletContext进行了封装, ...

  5. 关于ActionContext.getContext()的用法

    为了避免与Servlet API耦合在一起,方便Action类做单元测试,Struts 2对HttpServletRequest.HttpSession和ServletContext进行了封装,构造了 ...

  6. 关于ActionContext.getContext()的使用方法心得

    这个也是我在另外一位仁兄的博客中看到的,原博客的有点长,我把它精简了一下,算看起来比較方便吧. 为了避免与Servlet API耦合在一起,方便Action类做单元測试,Struts 2对HttpSe ...

  7. 大约ActionContext.getContext()使用体验

    这是我在另一个人的博客看了,原来博客的时间长一点.我把它简化了一下,运营商,以方便它看起来. 为了避免与Servlet API耦合在一起,方便Action类做单元測试,Struts 2对HttpSer ...

  8. ActionContext.getContext()用法

    为了避免与Servlet API耦合在一起,方便Action类做单元测试,Struts 2对HttpServletRequest.HttpSession和ServletContext进行了封装,构造了 ...

  9. Web版需求征集系统所得2,servlet中request.getParameter获值乱码问题解决

    servlet获值乱码问题解决 解决办法一(最简单有效) request.setCharacterEncoding("utf-8"); 解决办法二 因为乱码问题的产生是因为默认格式 ...

随机推荐

  1. 通过Driver获取数据库连接

    先看一下文件,在当前包下有一个properties配置文件,在根目录下有一个lib文件夹,里面放的是mySql的驱动jar包 Driver :是一个接口,数据库厂商必须提供实现的接口,能从其中获取数据 ...

  2. Ping N个IP测试网络连通性

    #-----------------------Smokeping移动节点-------------------##! /bin/bashecho "------------- Statin ...

  3. js拖拽3D立方体旋转

    这段时间有点闲,所以就自己找些小玩意来练习练习.今天做了一个可以拖拽页面内空白位置3D立方体就会跟着转动的小例子,布局方面用到css3 3D转换技术,通过transform控制旋转实现的. 上个图 代 ...

  4. 使用WinSetupFromUSB来U盘安装WINDOWS2003

    今天用UltraISO制作WINDOWS2003的U盘的安装启动,在安装系统的时候发现错误提示“INF file txtsetup.sif is corrupt or missing .status ...

  5. springboot pom 引用集合

    <dependency><groupId>com.google.code.gson</groupId><artifactId>gson</arti ...

  6. IOS 控件的生命周期

    ViewController的生命周期包括: Initialize ViewDidLoad ViewWillAppear ViewDidAppear ViewWillDisappear ViewDid ...

  7. IME日语输入法的快捷键

    <1>小小技巧 alt+shift可以在中,英,日之间切换 ALT+~可以在假名和英文之间切换 ctrl+CAPSLOCK 和 alt+CAPSLOCK可以在平假名和片假名之间切换 敲完字 ...

  8. 使用JAXP进行sax解析

    package cn.liuning.sax; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactor ...

  9. Android bluetooth low energy (ble) writeCharacteristic delay callback

    I am implementing a application on Android using BLE Api (SDK 18), and I have a issue that the trans ...

  10. aspnet_regiis.exe 的用法

    使用aspnet_regiis.exe注册.NET Framework 重新安装IIS以后,需要用aspnet_regiis.exe来注册.NET Framework, 如下: C:\WINDOWS\ ...