一尘不染

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

json

我正在使用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框架。


阅读 171

收藏
2020-07-27

共1个答案

一尘不染

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>
2020-07-27