1

我正在使用下面的代码使用 struts2-hibernate 获取 json,在 getZone 方法中我用于 HttpServletResponse response= (HttpServletResponse) ActionContext.getContext().get(StrutsStatics.HTTP_RESPONSE);返回 json。代码工作正常,但我有点困惑,想知道struts2中是否还有其他可以实现相同工作的方法,比如为HttpServletResponse使用其他一些struts2内置方法。

谁能告诉我一些解决方案

public void getZone() {
HttpServletResponse response= (HttpServletResponse) ActionContext.getContext().get(StrutsStatics.HTTP_RESPONSE);
try {
JSONObject zoneAreas = Hibernateclass.getZone(Id, organId);
response.getWriter().write(zoneAreas.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
4

2 回答 2

1

在Struts2中,可以使用以下两种方式获取HttpServletResponse对象

1)通过ServletActionContext访问HttpServletResponse

public String execute() {
        HttpServletResponse response = ServletActionContext.getResponse();

        return "SUCCESS";
    }

2) 通过实现 ServletResponseAware 接口访问 HttpServletResponse 并覆盖 setServletResponse() 方法。

public class LoginAction implements ServletResponseAware{

    HttpServletResponse response;

    //business logic
    public String execute() {
        Locale locale = getServletResponse().getLocale();
        return "SUCCESS";
    }

    public void setServletResponse(HttpServletResponse response) {
        this.response = response;
    }
    public HttpServletResponse getServletResponse() {
        return this.response;
    }   
}

在 Struts 2 文档中,推荐使用 ServletResponseAware

于 2013-10-18T04:57:08.837 回答
0

您可以在您的操作类中实现 ServletResponseAware 接口。这将使框架为您提供响应。

于 2013-10-18T04:51:43.117 回答