java - 如何在Struts2中返回HTTP错误状态码*和*内容

标签 java struts2

我有一个 Controller 接收接受 http 文件上传并以 JSON 确认响应。如果上传处理有任何问题,我想返回一个 HTTP 错误状态代码(例如 403 表示格式错误的请求或 500 表示一般处理错误),但我也想发送一个 JSON 详细错误列表消息。我知道如何返回 500 错误(感谢 this post),但我不知道如何返回 500 代码并仍然发送内容。

这是我的代码片段(它不符合我的要求):

@Action(value = "upload", results = { 
  @Result(name = SUCCESS, type = "freemarker", location = "results.ftl", params = { "contentType", "text/plain" }), 
  @Result(name = ERROR, type = "freemarker", location = "error.ftl", params = { "contentType", "text/plain" }), 
  @Result(name = ERROR, type = "httpheader", params = { "status", "500" }) 
})

public String upload() {
  //do stuff
  if(CollectionUtils.isEmpty(getActionErrors()) {
    return SUCCESS;
  } else {
     return ERROR;
  }
}

最佳答案

这是一篇旧文章,但如果您使用的是我建议使用的 Struts-JSON,您可以简单地返回一个包含您想要的内容的错误对象并附加如下状态代码:

@Result(name = ERROR, type="json", 
        params = {"root","errorResponse", "statusCode", "500"}
)   

关于java - 如何在Struts2中返回HTTP错误状态码*和*内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5904821/

相关文章:

java - 使用 Guava 大小为 "k"的子集

java - 使用 BouncyCaSTLe 的 ChaCha 进行文件加密

java - 更改线程中 View 的大小,而不是 UI 线程

java - 根据操作结果有条件地更改struts2表单的 'targets'属性

java - struts2 在 iframe 中的结果

apache - 调用 tiles 时 putAttribute 中的 NPE

java - 应用程序启动失败 : Spring Boot setEnableLoggingRequestDetails() not exist

java - 如果私有(private)帮助方法可以是静态的,那么它们是否应该是静态的

java - 为什么一个Struts 2 拦截器不能修改后续拦截器生成的 'result' 页面?

java - 将 Struts 从 2.3.7 升级到 2.3.33 后,JSONWriter.setDateFormatter 的 NoSuchMethodError