G 읽기 : "새 개체 (params)"를 사용하지 않고 Grails의 DatePicker-Value- 메소드

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

  •  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)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top