Grails command databinding - alternativa 1
Las siguientes alternativas no se muestran como una solución al problema, sino como diferentes propuestas que ayudan a entender mejor cómo construir vistas a través de command objects
Se desea mapear los valores de una vista con N paneles, la lógica de validaciones de la vista no se desea en el domain class porque no es el lugar indicado para validar la lógica de los paneles.
Domain class:
class Params {
// LAS MISMAS PROPIEDADES QUE EL COMMAND OBJECT.
// Constraints para la bd
static constraints = {
}
}
Command object:
class ParamsCommand {
String panelType
// PANEL CONEKTA
String sandboxPrivateKey
String sandboxPublicKey
// ...
// PANEL GENERAL
String emailContacto
// ...
// PANEL FINANZAS
BigDecimal costoPunto
// ...
}
Crear un command que contenga las propiedades de todos los paneles en la vista, cada panel estará dentro de un form
distinto.
El problema de la alternativa:
ParamsCommand
contiene todas las propiedades de todos los paneles de la vista, sin embargo como solo se enviará la información de 1 solo panel, al hacer submit solo se tendrá en el command object los valores del form al que se hace submit. Cuando se envíe de vuelta el command object a la vista, se perderán los valores de los forms a los que no se hizo submit.