当前位置: 首页 > 面试题库 >

如何使用Struts框架构造自定义错误json响应

黄淇
2023-03-14
问题内容

我正在使用Struts创建Web应用程序。当请求网址格式不正确时,我想发出如下错误的JSON响应

{
  “status”: 409,
  "code": 40924
  “property”: “aggregation”,
  “message”: “aggregationId not specified.”,
  “moreInfo”: “https://www.iiitb-swn.com/docs/api/errors/40924”
}

我已经在使用struts2-json插件来使用JSON序列化响应对象。我应该如何发送JSON错误响应。我可以想到下面的方法

在操作类中使用错误响应对象,并显式设置所有名称必需的名称值对

private Map<String, String> errorObject;

public String execute()
{
    ...
    if (aggregationId == -1)
    {
        errorObject = new HashMap<>();
        errorObject.put("status", "400");
        errorObject.put("code", "40924");
        ...
        return INPUT;
    }
    ...
}

然后,我可以只处理序列化errorObject在我的struts.xml

我是Struts的新手,想知道是否有确定的方法来做到这一点?也许可以更好地利用Struts框架。


问题答案:

Struts2 actionErrorsfieldErrorsActionSupport。您可以填写操作错误,也可以由验证拦截器产生。例如

addFieldError("aggregation", “aggregationId not specified.”);
addFieldError("moreInfo", “https://www.iiitb-swn.com/docs/api/errors/40924”);

然后返回json结果作为响应。

<result name="input" type="json">
  <param name="statusCode">409</param>
  <param name="errorCode">40924</param>
  <param name="ignoreHierarchy">false</param>
  <param name="includeProperties">^actionErrors.*,^fieldErrors.*</param>
</result>


 类似资料:
  • Apache可以让网站管理员自己自定义对一些错误和问题的响应。 自定义的响应可以定义为当服务器检测到错误或问题时才被激活。 如果一个脚本崩溃并产生"500 Server Error"响应,那么这个响应可以被更友好的提示替换或者干脆用重定向语句跳到其他的URL(本地的或外部的)。 行为 老式的行为 Apache1.3 会响应一些对于用户没有任何意义的错误或问题信息,而且不会将产生这些错误的原因写入日

  • EasySwoole支持用户自定义error handler 创建错误处理器 实现ErrorHandlerInterface接口 namespace App; use CoreAbstractInterfaceErrorHandlerInterface; class Test implements ErrorHandlerInterface { function handler( $msg

  • 问题内容: 我已经编写了REST API服务,该服务要求所有响应均为JSON。但是,当Go HTTP请求解析器遇到错误时,它将返回400作为纯文本响应,而无需调用我的处理程序。例: 请注意无效的授权标头。当然,400是正确的响应,但是当然是文本/纯文本。有什么方法可以配置Go http解析器以使用自定义错误响应媒体类型和主体? 问题答案: 你不能 您可以在net / http源中找到它,只有在请求

  • 给Rest服务打电话 http://acme.com/app/widget/123 返回: 此客户端代码的工作原理是: 但是,http://acme.com/app/widget/456返回: 但此客户端代码引发了一个异常: 我试过: 第二次调用只是抛出了另一个HttpClientErrorException,而且它觉得调用服务两次是不对的。 是否有一种方法可以调用该服务一次,并在成功时将响应解析

  • 我现在的问题是,我到底能实现什么/如何实现这些,或者是否有一种方法来扩展ErrorDecoder,使我能够处理这些错误消息。我想我应该能够将它们放入解码器,甚至实现/覆盖HttpClient,但我不确定正确/最好的方法是什么。