16

I'm new to Java EE and Struts2. I need to know if I'm doing it wrong or not.

I've got a link like this : http://localhost:8080/myProject/deleteUser?idUser=42

All I want is to get the idUser value.

Here is what I use to get the parameter value in my action class :

HttpServletRequest request = (HttpServletRequest) ActionContext.getContext()
                                  .get(ServletActionContext.HTTP_REQUEST);
System.out.println(request.getParameter("idUser"));
SupaCoco
  • 1,615
  • 2
  • 16
  • 23

4 Answers4

39

S2 provides a clean way to fetch the request parameters in you action class all you need to follow these simple rules.

  1. Create a property with same name as request parameter name.
  2. create getter and setters for this property or make property public (for S2.1+)

S2 will check the request parameter and will look for matching property in your action class and will inject the value in respected property.

in your case all you need to do

public class MyAction extends ActionSupport{

 private String idUser;
 getter and setters   

}

So in this case S2 will find the idUser property in your action class and its build in interceptor will inject the value in the idUser property

Umesh Awasthi
  • 23,407
  • 37
  • 132
  • 204
  • How do you declare the java attribute to inject this variable: search[value]=foo ? I've tried String[], List and Map but none works – Mike-Bell May 27 '22 at 11:29
16

Well, I'm not a Struts expert, but what I do in my Struts 2.2 project (and it works ok) is:

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

Here paramName would be "idUser".

Shivan Dragon
  • 15,004
  • 9
  • 62
  • 103
3

Try this:

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;
}
Ahmad AlMughrabi
  • 1,612
  • 17
  • 28
2
public class MyAction extends ActionSupport {
    HttpServletRequest request;
    String idUser = request.getParameter("idUser");
    System.out.println(idUser);

}

Try this!

HashimR
  • 3,803
  • 8
  • 32
  • 49