Since Goods
is not in the root of the object returned, you should use the right path in the notation, like gridModel="sales[0].goods"
.
Refer to this amazing answer for more details on how to traverse JSON objects.
Edit: the JSON you posted here seems malformed, but it's probably just a copy & paste issue; however, try with an hardcoded index; if it works, you should get, IF POSSIBLE, the index of the row to pass through OGNL, since you are not inside an iterator
, but inside a custom tag :/
But looking at the official Showcase's source code, it is done in a completely different way: two different URLs pointing to two different Actions for the Grid and the subGrid. I think that is the way it is meant to be used. Browse the repository to find the Actions too if you need to check the business they perform