Работа с флажками Grails - PullRequest
       18

Работа с флажками Grails

1 голос
/ 19 ноября 2011

Допустим, у меня есть такой сценарий:

enter image description here

Но, скажем, у меня есть сотни таких чеков, которые мне нужно обрабатывать одновременно с отправкой формы. Затем мне нужно будет сохранить в BD что-то, основываясь на том, какие флажки установлены, и идентификатор каждого блока

Итак, мне нужно это:

а) способ узнать, какие флажки отмечены, в пределах сотен из них b) каждый флажок должен быть «связан» с идентификатором, который я должен пройти, чтобы было выполнено определенное действие.

У меня есть тег <g:each>, записывающий всю таблицу и считывающий значения из БД. Буду признателен за любую помощь в этом, Спасибо заранее, RR

Ответы [ 2 ]

2 голосов
/ 20 ноября 2011

Вы можете привязать параметры к свойству List объекта домена или объекта команды.

Вид:

<g:each in="${elements}">
    <g:checkBox name="elementSelected[${it.id}]" value="${it.id}" />
</g:each>

Командный объект:

class ElementCommand {
    List elementSelected
}

Контроллер:

def execute = { ElementCommand cmd ->       
    cmd.elementSelected.each {
        if (it) {
            processId(it.toInteger())
        }
    }
}
1 голос
/ 20 ноября 2011

В вашем gsp вы должны отобразить все флажки:

<g:each in="${model}" status="i" var="invoiceItem">
<tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
    <td>
         <g:checkBox name="invoiceItem_${i}"/>
    </td>
   </tr>
</g:each>

В действии контроллера вам необходимо сопоставить выбранные флажки с объектами вашего домена

List invoiceList = session.invoiceList
params.each {
    if (it.key.contains("invoiceItem_")){
        if (it.value.contains("on")){
            InvoiceItem invoiceItem = invoiceList.get((it.key - "invoiceItem_") as Integer)
        }
    }

}

...