La lectura de la g: DatePicker-valor en Grails sin utilizar el “new Object (params)” - método

StackOverflow https://stackoverflow.com/questions/534330

  •  22-08-2019
  •  | 
  •  

Pregunta

Vamos a decir que tengo un planificador de evento llamado "foobar":

<g:datePicker name="foobar" value="${new Date()}" precision="day" />

¿Cómo se lee el valor presentado de este selector de fecha?

Una forma que funciona, pero tiene algunos efectos secundarios no deseados es la siguiente:

def newObject = new SomeClassName(params)
println "value=" + newObject.foobar

Esta forma de hacer que lee todos los campos presentados en newObject que es algo que quiero evitar. Sólo estoy interesado en el valor del campo "foobar".

La forma en que la prevista inicialmente esto se podría hacer era:

def newObject = new SomeClassName()
newObject.foobar = params["foobar"]

Pero Griales no parece hacerlo automáticamente la traducción del campo foobar en un objeto Date ().

Actualización: Información adicional se puede encontrar en el Grails JIRA .

¿Fue útil?

Solución 2

La lectura de la G: valor DatePicker se convirtió en mucho más fácil en Grails 1.2 (ver notas de la versión ):

  

Mejor Fecha de análisis

     

Si envía una fecha a partir de una    etiqueta,   la obtención del objeto Date es ahora tan   simple como mirar hacia arriba desde la   params objeto por su nombre (por ejemplo. params.foo   )

Otros consejos

Utilice el comando idioma. En el caso de tu ejemplo, asumiré que el formulario llama a la acción handleDate. En el interior del controlador:


def handleDate = { FoobarDateCommand dateCommand ->
    def theNextDay = dateCommand.foobar + 1
}

A continuación se FoobarDateCommand. Observe cómo se nombra el campo lo mismo que en la vista:


class FoobarDateCommand { 
    Date foobar 
}

Los objetos de órdenes son una forma práctica para encapsular todas las tareas de validación para cada una de sus formas, manteniendo los controladores agradable y pequeña.

Cuando un parámetro dice ser una "estructura", esto significa que hay una serie de parametros para representar su valor. En su caso, se encuentran:

  • params [ "foobar_year" año almacenamiento
  • params [ "foobar_month"] almacenar meses
  • params [ "foobar_day"] almacenar días

Sólo Apunte a ellos y hacer lo que quiere:)

Todavía es necesario conocer el formato aunque

def newObject = new SomeClassName()
newObject.foobar = Date.parse('yyyy-MM-dd', params.foobar)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top