Как получить доступ к параметрам url в классах действий Struts 2

Я новичок в 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"));

Ответ 1

S2 предоставляет чистый способ для извлечения параметров запроса в вашем классе действий все, что вам нужно, чтобы следовать этим простым правилам.

  • Создайте свойство с тем же именем, что и имя параметра запроса.
  • создать getter и seters для этого свойства или сделать свойство общедоступным (для S2.1 +)

S2 проверит параметр запроса и будет искать свойство соответствия в вашем классе действий и будет вводить значение в уважаемом свойстве.

в вашем случае все, что вам нужно сделать

public class MyAction extends ActionSupport{

 private String idUser;
 getter and setters   

}

Итак, в этом случае S2 найдет свойство idUser в вашем классе действий, и его сборка в перехватчике будет вводить значение в свойстве idUser

Ответ 2

Ну, я не эксперт Struts, но то, что я делаю в своем проекте Struts 2.2 (и все работает нормально):

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

Здесь paramName будет "idUser".

Ответ 3

Попробуйте следующее:

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;
}

Ответ 4

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

}

Попробуйте это!