몇 가지 양식을 통해 도메인 클래스의 데이터를 수집하려고합니다. 도메인의 인스턴스를 초기화하고 양식 페이지 (인스턴스의 속성에 수집 된 데이터 할당)를 통해 가져 와서 마지막 양식이 성공적으로 완료된 후 인스턴스를 저장하고 싶습니다.웹 플로우를 사용해야합니까?
웹 플로없이이 작업을 수행 할 수있는 방법이 있습니까?
몇 가지 양식을 통해 도메인 클래스의 데이터를 수집하려고합니다. 도메인의 인스턴스를 초기화하고 양식 페이지 (인스턴스의 속성에 수집 된 데이터 할당)를 통해 가져 와서 마지막 양식이 성공적으로 완료된 후 인스턴스를 저장하고 싶습니다.웹 플로우를 사용해야합니까?
웹 플로없이이 작업을 수행 할 수있는 방법이 있습니까?
웹 플로없이이 작업을 수행 할 수있는 방법이 있습니까?
이 작업을 수행하려면 hidden
필드를 사용할 수 있습니다. 그러나 웹 플로우를 사용하는 것이 더 좋을 수도 있습니다. flow
및 conversation
당신이 당신은 유지하는 간단한 DSL을
2) 흐름 내에서 액세스되는 변수를 저장할 수 있습니다 당신은 두 개의 새로운 범위를 가지고
1) : 여기
사용하여 Webflows의 몇 가지 장점이 있습니다flow
범위가 있기 때문에)
3
단정 한 가지, 당신은 같은 것을 할 수 있습니다flow.someThing = new YourClassName(params) //places object in flow scope
유의 사항 :
1) 당신이 흐름 범위의이 클래스 개체를 사용 Serializable
클래스를 구현해야합니다.
2) 그리고 Grails 1.2에서 명시 적으로 Webflow
플러그인을 설치해야합니다. 문서는이 말한다 :
는 이후 Webflow는 이 기능을 사용하려면 Webflow 플러그인을 설치해야하므로, Grails의 핵심에 더 이상 없습니다 : Grails의를 설치-플러그인을
(here를 참조 webflow).
개미의 의견에 대한 대안으로 session
을 사용할 수 있지만 비 도메인 개체 또는 간단한지도를 저장할 수 있습니다.
grails-app/domain
class Widget {
String name
int id
// constraints, etc
}
에서 :
거친 아이디어 등 우발적 인 백 버튼에 대한 보호를 많이 제공이 확실히 추가 복잡성의 많은으로 이어질 것이며, webflows는 을 in grails-app/controllers
class WidgetCommand {
// setup your command
}
class WidgetController {
def savePage1 = { WidgetCommand cmd ->
// validate, etc
def widget = session.tempWidget ?: [:]
widget.putAll(cmd.properties)
session.tempWidget = widget
[widget: widget]
}
def savePage2 = { WidgetCommand cmd ->
// etc
}
def savePage3 = {
// or something similar here
def finalWidget = new Widget(session.tempWidget)
finalWidget.save()
}
}
실제 도메인 개체를 직접 저장할 수도 있습니다. 메모리,하지만 당신이 개체를 편집하는 경우 (새 것과 반대로) 세션 닫기에서 자동으로 저장됩니다, 그리고 당신은 그것을 최대 절전 모드 세션에 다시 링크해야 할 것입니다.
답변 해 주셔서 감사합니다. 웹 플로우의 모든 장점을 알고 있습니다 (데이터 바인딩 문제가 발생하더라도 http : // stackoverflow 참조).com/questions/8861667/data-binding-issues-with-webflows), 웹 플로우없이 이것을 수행하는 좋은 방법이 있는지 궁금합니다. 숨겨진 필드에 대한 귀하의 제안은 효과가 있지만 귀하가 말했듯이 웹 플로우가 바람직합니다. – zoran119
Grails 웹 플로우가 너무 복잡하여 복잡한 흐름에 거의 쓸모가 없습니다. –