我在我的网络应用程序中使用Struts 2。我编写代码来检查用户会话到拦截器,但是当我返回net.sf.json.JSONObject
作为响应时,它重置响应对象并将null设置为对象。
请检查我的代码。
import net.sf.json.JSONObject;
import com.opensymphony.xwork2.interceptor.Interceptor;
public class AuthorizationInterceptor implements Interceptor {
JSONObject response = new JSONObject();
public String intercept(ActionInvocation invocation) {
try {
Map session = invocation.getInvocationContext().getSession();
if (session.get("userId") == null) {
response.put("errorCode", "SESSION_OUT");
return ActionSupport.ERROR;
} else {
System.out.println("Session found");
Object action = invocation.getAction();
return invocation.invoke();
}
} catch (Exception e) {
return ActionSupport.ERROR;
}
}
public JSONObject getResponse() {
return response;
}
public void setResponse(JSONObject response) {
this.response = response;
}
}
如何从拦截器获取JSON对象作为响应。 请帮我解决这个问题。
答案 0 :(得分:2)
您的代码中存在多个错误。
使用statusCode设置响应的状态:
<result name="error" type="json">
<param name="statusCode">304</param>
</result>
并且errorCode发送错误(服务器可能最终向客户端发送一些不是序列化JSON的东西):
<result name="error" type="json">
<param name="errorCode">404</param>
</result>
然后在AJAX回调函数中将其读取到客户端。