我正在使用以下代码使用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();
}
}
最佳答案
在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