struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lukasz Lenart (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (WW-4301) includeProperties Does Not Work with a List of Lists
Date Thu, 13 Mar 2014 06:05:43 GMT

     [ https://issues.apache.org/jira/browse/WW-4301?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Lukasz Lenart updated WW-4301:
------------------------------

    Description: 
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:
{code:java}
public List<List<String>> getListOfLists() {
	return listOfLists;
}
{code}
My struts.xml is defined as follows:
{code:xml}
<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>
{code}
However, the include patterns that are constructed within JSONUtil are not accurate.  Instead
of making the expected pattern that would work:
{noformat}
listOfLists
listOfLists\[\d+\]
listOfLists\[\d+\]\[\d+\]
{noformat}
Only the following are created:
{noformat}
listOfLists\[\d+\]
listOfLists\[\d+\]\[\d+\]
{noformat}
Because the first "listOfLists" is not created, the property is excluded in the results.

This all happens because of line 463 in JSONUtil:
{code:java}
addPattern(results, patternExpr.substring(0, patternExpr.lastIndexOf(includePatternData.get(ARRAY_BEGIN_STRING).get(type))),
type);
{code}
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.

  was:
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.


> 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
>              Labels: json
>             Fix For: 2.3.x
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> 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:
> {code:java}
> public List<List<String>> getListOfLists() {
> 	return listOfLists;
> }
> {code}
> My struts.xml is defined as follows:
> {code:xml}
> <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>
> {code}
> However, the include patterns that are constructed within JSONUtil are not accurate.
 Instead of making the expected pattern that would work:
> {noformat}
> listOfLists
> listOfLists\[\d+\]
> listOfLists\[\d+\]\[\d+\]
> {noformat}
> Only the following are created:
> {noformat}
> listOfLists\[\d+\]
> listOfLists\[\d+\]\[\d+\]
> {noformat}
> Because the first "listOfLists" is not created, the property is excluded in the results.
> This all happens because of line 463 in JSONUtil:
> {code:java}
> addPattern(results, patternExpr.substring(0, patternExpr.lastIndexOf(includePatternData.get(ARRAY_BEGIN_STRING).get(type))),
type);
> {code}
> 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)

Mime
View raw message