0

我遇到了非常奇怪的错误,当我尝试访问它时,我收到的请求为空。我总是使用相同的方法来获取它,但现在我遇到了这个错误。

我的动作如下所示:

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
4

1 回答 1

2

实现ServletRequestAware接口并在request那里设置变量,而不是在构造过程中这样做。

但通常您不需要访问请求,因为 struts 的 params 拦截器完成了请求对象所需的所有工作。

ServletRequestAware-Interface 的文档中:

所有想要访问 servlet 请求对象的 Action 都必须实现这个接口。

仅当 Action 在 servlet 环境中使用时,此接口才相关。

请注意,使用此接口会使 Action 绑定到 servlet 环境,因此应尽可能避免使用,因为单元测试之类的事情会变得更加困难。

于 2011-09-18T08:40:52.893 回答