G 읽기 : "새 개체 (params)"를 사용하지 않고 Grails의 DatePicker-Value- 메소드
-
22-08-2019 - |
문제
"foobar"라는 DatePicker가 있다고 가정 해 봅시다.
<g:datePicker name="foobar" value="${new Date()}" precision="day" />
이 날짜 피커의 제출 된 값을 어떻게 읽습니까?
작동하지만 원치 않는 부작용이있는 한 가지 방법은 다음과 같습니다.
def newObject = new SomeClassName(params)
println "value=" + newObject.foobar
이를 수행하는 방법은 제출 된 모든 필드를 NewObject로 읽습니다. 나는 "foobar"필드의 가치에만 관심이 있습니다.
내가 원래 이것을 할 수 있다고 가정 한 방식은 다음과 같습니다.
def newObject = new SomeClassName()
newObject.foobar = params["foobar"]
그러나 Grails는 FooBar 필드의 Date () 객체로 자동으로 번역되지 않는 것 같습니다.
업데이트 : 추가 정보는 다음에 있습니다 지라를 성배합니다.
해결책 2
G 읽기 : Grails 1.2에서 DatePicker 값이 훨씬 쉬워졌습니다 ( 릴리즈 노트):
더 나은 날짜 구문 분석
태그에서 날짜를 제출하면 날짜 객체를 얻는 것이 이제 Params Object에서 이름으로 찾는 것만 큼 간단합니다 (예 : Params.foo).
다른 팁
사용 명령 개체 관용구. 귀하의 예제의 경우, 귀하의 양식이 행동을 호출한다고 가정합니다. handleDate
. 컨트롤러 내부 :
def handleDate = { FoobarDateCommand dateCommand ->
def theNextDay = dateCommand.foobar + 1
}
여기에 있습니다 FoobarDateCommand
. 시야와 동일하게 필드를 어떻게 지명하는지 주목하십시오.
class FoobarDateCommand {
Date foobar
}
명령 개체는 각 양식에 대한 모든 유효성 검사 작업을 캡슐화하여 컨트롤러를 멋지고 작게 유지하는 편리한 방법입니다.
매개 변수가 "구조"라고 말하면, 이는 그 값을 나타내는 많은 매개 변수가 있음을 의미합니다. 귀하의 경우에는 다음이 있습니다.
- 매개 변수 [ "foobar_year"저장 연도
- 매개 변수 [ "foobar_month"] 저장 월
- 매개 변수 [ "foobar_day"] 저장의 날
그냥 가져 와서 원하는대로하십시오 :)
그래도 형식을 알아야합니다
def newObject = new SomeClassName()
newObject.foobar = Date.parse('yyyy-MM-dd', params.foobar)