Andrew Bernhagen created WW-4301:
------------------------------------
Summary: includeProperties Does Not Work with a List of Lists
Key: WW-4301
URL: https://issues.apache.org/jira/browse/WW-4301
Project: Struts 2
Issue Type: Bug
Components: Plugin - JSON
Affects Versions: 2.3.16
Reporter: Andrew Bernhagen
Priority: Minor
I found this issue when using server-side processing with JQuery Datatables and
attempting to populate.
Say I have this getter/field on my action:
public List<List<String>> getListOfLists() {
return listOfLists;
}
My struts.xml is defined as follows:
<action name="GetData" method="loadData"
class="com.example.web.action.WebAction">
<result type="json" >
<param name="ignoreHierarchy">false</param>
<param
name="includeProperties">listOfLists\[\d+\]\[\d+\]</param>
</result>
</action>
However, the include patterns that are constructed within JSONUtil are not
accurate. Instead of making the expected pattern that would work:
listOfLists
listOfLists\[\d+\]
listOfLists\[\d+\]\[\d+\]
Only the following are created:
listOfLists\[\d+\]
listOfLists\[\d+\]\[\d+\]
Because the first "listOfLists" is not created, the property is excluded in the
results.
This all happens because of line 463 in JSONUtil:
addPattern(results, patternExpr.substring(0,
patternExpr.lastIndexOf(includePatternData.get(ARRAY_BEGIN_STRING).get(type))),
type);
Since we're going at the last index of the ARRAY_BEGIN_STRING string, it's
skipping the first index. This could be updated to be smarter to build the
include patterns as expected.
--
This message was sent by Atlassian JIRA
(v6.2#6252)