如何在Action类Struts 2中访问url参数

时间:2012-03-06 11:41:16

标签: java-ee struts2

我是Java EE和Struts2的新手。我需要知道我是否做错了。

我有一个这样的链接:http://localhost:8080/myProject/deleteUser?idUser=42

我想要的只是获取idUser值。

以下是我在动作类中使用的参数值:

HttpServletRequest request = (HttpServletRequest) ActionContext.getContext()
                                  .get(ServletActionContext.HTTP_REQUEST);
System.out.println(request.getParameter("idUser"));

4 个答案:

答案 0 :(得分:33)

S2提供了一种简洁的方法来获取操作类中的请求参数,只需遵循这些简单的规则即可。

  1. 创建一个与请求参数名称相同的属性。
  2. 为此属性创建getter和setter,或者将属性设为public(对于S2.1 +)
  3. S2将检查请求参数,并在您的操作类中查找匹配属性,并将该值注入到受尊重的属性中。

    在你的情况下你需要做的一切

    public class MyAction extends ActionSupport{
    
     private String idUser;
     getter and setters   
    
    }
    

    因此,在这种情况下,S2将在您的动作类中找到idUser属性,并且它在拦截器中的构建将在idUser属性中注入值

答案 1 :(得分:15)

好吧,我不是Struts专家,但我在Struts 2.2项目中所做的事情(并且运行正常)是:

String paramValue = ServletActionContext.getRequest().getParameter("paramName");

这里paramName将是“idUser”。

答案 2 :(得分:2)

试试这个:

ActionContext context = ActionContext.getContext();
Map<String, Object> params = context.getParameters();
String userId = findParam("idUser", params);

public String findParam(String key, Map<String, Object> params) {
  Object obj = params.get(key);
  if(obj != null) {
    String[] values = (String[])obj;
    return values.length > 0 ? values[0] : null;
  } 
  return null;
}

答案 3 :(得分:0)

public class MyAction extends ActionSupport {
    HttpServletRequest request;
    String idUser = request.getParameter("idUser");
    System.out.println(idUser);

}

试试这个!