Зачем мне разбирать даты в Grails? - PullRequest
0 голосов
/ 13 апреля 2011

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

Вместо того, чтобы просто делать 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 Ответ

1 голос
/ 13 апреля 2011

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

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

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

...