2014-07-19 2 views
0

저는 현재 자바 애플리케이션 코드를 웹 애플리케이션으로 옮기는 작업을하고 있습니다. 이 작업을 위해 grails를 사용하기로했습니다. (저는 이미 grails에서 몇 가지 간단한 응용 프로그램을 개발했으며 잘 작동했습니다.)hasmany 도메인을 사용하여 도메인을 편집하고 커밋하는 방법

그러나 한 가지 문제가 있지만 심각한 문제가 있습니다.

와 도메인 모델을주기 : 나는 "belongsTo를"설정을 사용하기 때문에 :
고객이 접촉

편집을 해결하기 위해 속하는 많은 연락처
를 주소 고객에 속하는 많은 주소
을 가지고있다 계단식 저장은 문제가되지 않을 것입니다 (제 생각에는).

내가 원하는 것 : 고객을 만드는 동안 몇 가지 주소를 첨부 할 가능성이 있으며 거기에 몇 개의 연락처를 추가해야합니다. 고객보기에서 저장 버튼을 누른 후에는 모두 데이터베이스에 커밋해야합니다. (고객 편집과 동일합니다 ...)

현재 동작 : 기본 컨트롤러 및 뷰를 사용하려면 먼저 고객을 커밋해야하며 연락처와 동일한 주소를 추가해야합니다 (먼저 주소 및 연락처를 추가하는 것보다).

편집 :
(올바르게 알고 있듯이) 데이터 바인딩은 "생성 컨트롤러"및 "생성보기"결과 클래스에서 기본적으로 사용됩니다.
웹 페이지 흐름을 처리하는 방법, 이전에 고객 도메인을 저장하지 않고 주소와 연락처를 추가 할 수있는 방법은 없습니다. 그리고 "customer.create", "address.create"및 "contact.create"뷰간에 여러 번 전환 한 후에도 전체 구조가 여전히 존재합니다.
(세션 객체에 고객 도메인을 저장하려고 시도하고 create.address보기 저장 메소드에서 세션에서 고객을 가져 와서 addressInstance를 고객의 주소록에 추가하여 고객을 저장했습니다. 다시 세션에서 및 세션을 편집 할 수있는 인스턴스를 가져 오는 customerInstance에 대한 새 editSession- 작업으로 다시 전환했다. 그러나 그것은 내게 그 customerInstance만이 세션에 포함되어 있고 관련 객체가 아니라는 것 같았다. [Omg, 희망을 이해할 수 있기를 바랍니다 ...])

필자가 필요로하는 워크 플로우는 어떻게 가능합니까? (바라기를 당신은 저에게 몇몇 문서 또는보기에 저를 가르 킬 수있다)

고맙게 미리, Susanne.

사용자 친절한 디자인은 같은 페이지에 세 개의 객체를 (사용자가 세 가지 사이를 전환 할 것입니다 왜 만드는 것입니다 :

+0

Grails로 이미 작업 해 왔기 때문에 "바인딩하고 저장"하는 것이 너무 간단한 답변입니다. :) 좀 더 구체적인 수 있습니까? –

+0

GORM이 어떻게 작동하는지 이해하기 시작하는 것이 가장 좋은 출발점입니다. [** 여기에서 시작 **] (http://grails.org/doc/latest/guide/GORM.html). [GORM의 협회] (http://grails.org/doc/latest/guide/GORM.html#gormAssociation)는 귀하가 추구하는 것을 성취하기 위해 이해해야 할 사항입니다. – dmahapatro

+0

답장을 보내 주셔서 감사합니다. 내 게시물을 편집하여 - 잘하면 - 이해할 수있게 만들어야합니다. 문제를 해결할 해결책이 있다고 생각합니다. 내 생각 엔, 내 문제는 계단식 저장이 아니라 개체 구조를 여러보기 변경 내용 사이에서 유지하는 것입니다. – susi

답변

0

많은 가능성이 있습니다, 여기 당신이 해결책을 찾는 데 도움이 될 수 있습니다 몇 가지 제안은 새 고객을 설치하기위한 화면?). 이렇게하면 페이지에서 더 많은 작업을 수행 할 수 있지만 한 번에 고객을 생성/편집하고 저장할 수 있습니다.

Customer을 추가하는 화면이있는 경우 사용자 작성을 시작하도록 사용자에게 & Contact을 허용합니다. 저장해. 사용자가 Address 패스를 Customer ID와 함께 추가하면 Customer (사용자 ID 보유)에 링크 된 링크를 저장하십시오. Contacts와 동일합니다.

당신은 그가 사용자가 Customer 페이지의 "주소를 추가"를 클릭 할 때 자동으로 Customer을 저장할 수 Address를 추가하기 전에 사용자가 명시 적으로 Customer을 저장하지 않으려면

. Contacts와 동일합니다.

당신이 누군가에 미완성 고객을 표시하지 않으려면 다른 필터링 고객에 창조 플래그를 을 추가 할 수 있습니다 미완성Customers (또는 당신이 링크 다른 테이블을 사용 미완성 사용자가 고객의 '상태'정보를 싫어하는 경우). 사용자가 Customer이 준비되었다고 결정한 경우 (페이지에서 누르기) 미완료 상태를 지우거나 완료되지 않은 표에서 제거하여 모든 사용자가 새로운 Customer을 볼 수 있도록합니다.

이렇게하면 세션 시간 초과를 복구하고 사용자에게 계속해서 고객을 만들 수 있습니다.

+0

답변을 많이 주셔서 감사합니다. 웹 플로우 플러그인에 좋은 점이 될 것이라고 생각했지만, 2.4에서는 슬프게도 작동하지 않습니다. 2. 내부적으로 논의한 후, 나는 지난 2 단락에서 당신의 아이디어를 가지고 갈 것입니다. (미래에 사용자가 받아 들일 것을 기대 함 ...) – susi

관련 문제