Пожалуйста, обратите внимание на коллекцию MongoDB со следующим документом:Каким образом можно работать со сложными типами (списками и объектами) в Jaspersoft?
"_id": "clientsInfo"
"data": {
"clientsList" : [
{
"name" : "Mike",
"country" : "USA"
},
...
]
}
После установки DataSet и определения запроса, как это ...
{
collectionName:'projectA',
findQuery: {
'_id':'clientsInfo',
},
findFields: {
'_id':0,
'data.clientsList':1
},
}
... Я в состоянии отобразить первый элемент из извлеченного массива (java.util.List
типа) в JasperSoft студии внутри текстового поля, используя следующее выражение:
$F{data.clientsList}.get(0)
Бу t, учитывая, что я хотел бы показать все данные в таблице Name/Country ...
Question1: Как я могу получить доступ к любому из полей словаря? Попытка get method Я получаю The method get(String) is undefined for the type Object.
Ошибка. Однако, зная, что объект является экземпляром com.mongodb.BasicDBObject
, он должен иметь этот метод, наследуемый (см. doc).
Я также попытался наложить объект на org.json.JSONObject
, но затем я получу net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression for source text: (JSONObject)$F{data.clientsList}.get(0)
.
Question2: Предположим, что мы уже решили первый вопрос ... Как я могу перебирать список для доступа не только к первому элементу, но и ко всем из них в соответствии с длиной массива? Можно ли использовать предложение for-loop внутри редактора выражений JasperSoft? (if-then-else seems to be available)
Заранее благодарен, любой ключ, который указывает мне в правильном направлении, будет оценен по достоинству.
'Можно ли использовать предложение для цикла? - Что такое предложение цикла в JasperReports? –
Некоторое выражение, которое позволяет мне определить самоинкрементную переменную для доступа к элементам массива от начала до конца, например 'get (i)'. –