Зачем мне нужно анализировать даты в Grails?

#date #grails #parameters #formatting #action

#Дата #grails #параметры #форматирование #Экшен

Вопрос:

Я нахожусь в неудачном положении, когда мне нужно использовать составной идентификатор в приложении Grails, где я работаю с устаревшими данными. Это означает, что я должен переопределить некоторые действия в контроллере, но когда я это делал, меня поразил тот факт, что я не мог использовать аргумент use a date непосредственно в качестве параметра динамического метода.

Вместо того, чтобы просто делать MyLegacyObj.findBySystemIdAndLogDate(params.systemId, params.logDate) , мне сначала нужно было проанализировать строку даты, прежде чем передавать ее динамическому методу. Чтобы еще больше усложнить ситуацию, я понятия не имел, какой формат имеет строка даты (пока я не добавил много строк log.debug () в выходные данные). Итак, теперь у меня есть фрагмент кода, выглядящий следующим образом

 def formatter = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy")
MyLegacyObj.findBySystemIdAndLogDate(params.systemId, formatter.parse(params.logDate));
  

Это кажется неоптимальным, чтобы не сказать опасным (что, если формат даты изменится в зависимости от локали?)? Каков был бы рекомендуемый способ сделать это, и действительно ли мне вообще нужно анализировать даты?

Ответ №1:

Date это довольно сложный объект, и params это просто String s, поэтому Date он передается по частям. Он «волшебным образом» собирается из частей при назначении x.properties = params .

Командный объект выполнит всю работу за вас, если вы добавите к нему Date поле.

Это не имеет ничего общего с динамическим или статическим вызовом методов. Ваш GSP, который отображает Date editor, тоже может помешать.