2015-02-17 5 views
0

У меня есть два списка, один из которых называется schemaList, а другой - recordCount, сгенерированный из разных SQL-запросов. Как я могу заполнить одну таблицу двумя списками в GSP? Я могу получить один список для заполнения с помощью g: каждый, но не оба. EDIT: Выдержки из StatsService.groovy:Заполнение таблицы Grails GSP из нескольких списков

//some sql connection code 
sconn.eachRow ("select username as SCHEMA_NAMES from dba_users) {row -> 
schemaList << row.SCHEMA_NAMES 
} 

//use schemaList.each() to iterate through schemas and create oracle proxy connections for each schema to get a count of the message_xml table 
pconn.eachRow("select count(*) as rCount from message_xml") { row -> 
recordCount << row.rCount 
} 

return [recordCount:recordCount] 
return [schemaList:schemaList] 

Я пытаюсь вывести его в нечто вроде этого GetStats.gsp:

<thead> 
<tr> 
<th>Schema</th> 
<th>Count</> 
</tr> 
</thead> 
<tbody> 
<g:each in="${schemaList} var="sl"> 
<tr> 
<td>${sl}</td> 
<g:each in="${recordCount}" var="rc"> 
<td>${rc}</td> 
</tr> 
</g:each> 
</g:each> 
</tbody> 

но моя таблица показывает пустой, когда я это делаю ,

Я занимаюсь только Grails около 2 месяцев, но мне это очень нравится. Заранее спасибо за помощь!

+0

Добро пожаловать в переполнение стека. Можете ли вы опубликовать то, что вы уже пробовали? –

ответ

0

Если я правильно понял, вы хотите отобразить список схем и список recordCount. Может быть, вы можете на контроллере сделать логику, чтобы присоединиться два списка я Reffer что-то

def auxlist= schemaList + recordCount 
2

Имея два return заявления делает нулевой смысл. Это не будет компилироваться в классе Java и только компилируется в классе Groovy, потому что это разрешено по другим причинам. Но будь то Java, Groovy или любой другой JVM-язык, вы можете получить только одно значение из метода.

Этот метод может содержать несколько значений, поэтому вы можете создать небольшой класс объектов данных с двумя списками в качестве полей и вернуть их. Но в этом случае, поскольку вы создаете данные для передачи GSP с контроллера, вы можете использовать стандартные соглашения Grails. Если вы вернете что-то из метода действия контроллера, ожидается, что он будет Map. Вы можете отображать напрямую, перенаправлять, пересылать и т. Д., Но все они «недействительны».

Ваш контроллер должен вернуть одну карту в качестве модели, и она может иметь несколько значений, поэтому объединить две карты в одном:

return [recordCount:recordCount, schemaList:schemaList] 

, а затем включить, что в модели карты в контроллере (или используйте его как карту всей модели).

Смежные вопросы