2012-01-15 2 views
0

몇 가지 양식을 통해 도메인 클래스의 데이터를 수집하려고합니다. 도메인의 인스턴스를 초기화하고 양식 페이지 (인스턴스의 속성에 수집 된 데이터 할당)를 통해 가져 와서 마지막 양식이 성공적으로 완료된 후 인스턴스를 저장하고 싶습니다.웹 플로우를 사용해야합니까?

웹 플로없이이 작업을 수행 할 수있는 방법이 있습니까?

답변

0

웹 플로없이이 작업을 수행 할 수있는 방법이 있습니까?

이 작업을 수행하려면 hidden 필드를 사용할 수 있습니다. 그러나 웹 플로우를 사용하는 것이 더 좋을 수도 있습니다. flowconversation 당신이 당신은 유지하는 간단한 DSL을

2) 흐름 내에서 액세스되는 변수를 저장할 수 있습니다 당신은 두 개의 새로운 범위를 가지고

1) : 여기

사용하여 Webflows의 몇 가지 장점이 있습니다 flow 범위가 있기 때문에)

3

단정 한 가지, 당신은 같은 것을 할 수 있습니다

flow.someThing = new YourClassName(params) //places object in flow scope 

유의 사항 :

1) 당신이 흐름 범위의이 클래스 개체를 사용 Serializable 클래스를 구현해야합니다.

2) 그리고 Grails 1.2에서 명시 적으로 Webflow 플러그인을 설치해야합니다. 문서는이 말한다 :

Grails를 1.2에서

는 이후 Webflow는 이 기능을 사용하려면 Webflow 플러그인을 설치해야하므로, Grails의 핵심에 더 이상 없습니다 : Grails의를 설치-플러그인을

(here를 참조 webflow).

+0

답변 해 주셔서 감사합니다. 웹 플로우의 모든 장점을 알고 있습니다 (데이터 바인딩 문제가 발생하더라도 http : // stackoverflow 참조).com/questions/8861667/data-binding-issues-with-webflows), 웹 플로우없이 이것을 수행하는 좋은 방법이 있는지 궁금합니다. 숨겨진 필드에 대한 귀하의 제안은 효과가 있지만 귀하가 말했듯이 웹 플로우가 바람직합니다. – zoran119

+0

Grails 웹 플로우가 너무 복잡하여 복잡한 흐름에 거의 쓸모가 없습니다. –

0

개미의 의견에 대한 대안으로 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() 
    } 
} 

실제 도메인 개체를 직접 저장할 수도 있습니다. 메모리,하지만 당신이 개체를 편집하는 경우 (새 것과 반대로) 세션 닫기에서 자동으로 저장됩니다, 그리고 당신은 그것을 최대 절전 모드 세션에 다시 링크해야 할 것입니다.

관련 문제