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 个属性。
excludeNullProperties
或 includeProperties
用于仅序列化所需的字段。此外,includeProperties
允许使用正则表达式,以防您不想序列化完整的对象内容。
<result type="json">
<param name="includeProperties">
^entries\[\d+\].clientNumber,
^entries\[\d+\].scheduleNumber,
^entries\[\d+\].createUserId
</param>
</result>
Here为官方文档
假设我的 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 个属性。
excludeNullProperties
或 includeProperties
用于仅序列化所需的字段。此外,includeProperties
允许使用正则表达式,以防您不想序列化完整的对象内容。
<result type="json">
<param name="includeProperties">
^entries\[\d+\].clientNumber,
^entries\[\d+\].scheduleNumber,
^entries\[\d+\].createUserId
</param>
</result>
Here为官方文档