Struts2 仅对 JSON 结果使用特定变量对象(并非所有操作变量)

Struts2 Only Use Specific Variable Object for JSON Result (not all Action variables)

假设我的 Struts 映射 return 是一个 JSON 字符串,

    <action name="retrieveJson" method="retrieveJson" class="myapp.WebServiceAction">
        <result type="json">
            <param name="contentType">text/plain</param>
        </result>       
    </action>

我的操作 class 有多个变量可能 "construed" 作为潜在结果。

public class WebServiceAction {
   private List<PublicationRecord> publicationRecords; // getters+setters
   private List<ReviewRecord> reviewRecords; // getters+setters
   private List<CustomRecord> customRecords; // getters+setters
}

当我执行以下操作时,我设置了我想要的特定变量,但是 Struts2 似乎 return 适合 Action 下的所有变量:

public String retrieveJson() {
   publicationRecords = service.getPublicationRecords();
   return SUCCESS;
}

return SUCCESS 有错吗?我只想要我在此方法中设置的 JSON 化变量。现在,它正在 return 处理所有 3 个变量,

{
  "publicationRecords" : ..,
  "reviewRecords" : null,
  "customRecords" : null
}

预计:

{"publicationRecords" : .. }

为此,您可以使用 2 个属性。 excludeNullPropertiesincludeProperties 用于仅序列化所需的字段。此外,includeProperties 允许使用正则表达式,以防您不想序列化完整的对象内容。

<result type="json">
  <param name="includeProperties">
    ^entries\[\d+\].clientNumber,
    ^entries\[\d+\].scheduleNumber,
    ^entries\[\d+\].createUserId
  </param>
</result>

Here为官方文档