Запрос Struts2 как ноль - PullRequest
       27

Запрос Struts2 как ноль

0 голосов
/ 18 сентября 2011

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

Мое действие выглядит так:

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 Ответ

2 голосов
/ 18 сентября 2011

Реализуйте интерфейс ServletRequestAware и установите там переменную request вместо того, чтобы делать это во время конструирования.

Но обычно вам не нужен доступ к запросу, так как перехватчик параметров структуры данных делает всеДля работы необходим объект запроса.

Из документации ServletRequestAware -Interface:

Все действия, которые хотят иметь доступ к объекту запроса сервлета, должны реализовывать этот интерфейс.

Этот интерфейс имеет значение только в том случае, если действие используется в среде сервлета.

Обратите внимание, что использование этого интерфейса привязывает действие к среде сервлета, поэтому его следует избегать, если это возможно, поскольку такие вещи, как unitтестирование станет более сложным.

...