Запрос Struts2 как ноль
У меня очень странная ошибка, я получаю запрос как нулевой, когда пытаюсь получить к нему доступ. Я всегда использовал один и тот же метод, чтобы получить его, но теперь у меня возникает эта ошибка.
Мои действия выглядят так:
package com.deveto.struts.actions;
import com.deveto.hibernate.mappings.Slider;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.util.ServletContextAware;
/**
*
* @author denis
*/
public class ContentAction extends ActionSupport implements ServletContextAware {
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
HttpServletResponse response = (HttpServletResponse) ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE);
ActionContext ac = ActionContext.getContext();
ServletContext sc = (ServletContext) ac.get(ServletActionContext.SERVLET_CONTEXT);
@Override
public String execute() throws Exception {
System.out.println("request: " + request);
return SUCCESS;
}
public ActionContext getAc() {
return ac;
}
public void setAc(ActionContext ac) {
this.ac = ac;
}
public HttpServletRequest getRequest() {
return request;
}
public void setRequest(HttpServletRequest request) {
this.request = request;
}
public HttpServletResponse getResponse() {
return response;
}
public void setResponse(HttpServletResponse response) {
this.response = response;
}
public ServletContext getSc() {
return sc;
}
public void setSc(ServletContext sc) {
this.sc = sc;
}
public void setServletContext(ServletContext sc) {
this.sc = sc;
}
}
И теперь я ничего не могу сделать, запрос всегда нулевой
request: null
1 ответ
Реализовать ServletRequestAware
Интерфейс и установите ваш request
Переменная там вместо того, чтобы делать это во время строительства.
Но обычно вам не нужен доступ к запросу, так как перехватчик параметров структуры данных делает всю работу, для которой необходим объект запроса.
Из документации ServletRequestAware
-Интерфейс:
Все действия, которые хотят иметь доступ к объекту запроса сервлета, должны реализовывать этот интерфейс.
Этот интерфейс имеет значение только в том случае, если действие используется в среде сервлета.
Обратите внимание, что использование этого интерфейса делает действие привязанным к среде сервлета, поэтому его следует по возможности избегать, поскольку такие вещи, как модульное тестирование, станут более сложными.