Как получить доступ к параметрам 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);
}
Попробуйте это!