문제

웹 흐름에서 브라우저의 뒤로 버튼이 올바르게 작동하는 데 문제가 있습니다. Grails의 버전은 1.1.2입니다. 예제 코드를 상상해보십시오 :

def someFlow = {
   ...
   fillGroup {
      on("addMember"){
         ...
      }.to "fillMember"
   }
   fillMember {
      on("addMember") {
         ...
      }.to "fillMember"
      on("goToCart").to "showCart"
   }
   showCart {
      ...
   }
}

이제 그룹을 추가하고 여러 회원을 추가하고 카트로갑니다. 문제는 멤버를 채우는 동안 URL이 동일하게 유지된다는 것입니다. URL 실행 매개 변수는 상태 (뷰)가 변경되는 경우에만 변경됩니다.

따라서 Firefox는 URL이 변경되지 않기 때문에 FillMember 페이지를 한 페이지로 기억합니다. 따라서 뒤로 버튼이 제대로 작동하지 않습니다. 내가 쇼카르트에 있고 뒤로 밀면, 필자 페이지에 도달한다. 뒤로 버튼을 추가로 푸시하면 FillGroup이 반환됩니다. 모든 FillMember 페이지를 살펴 봐야합니다.

동일한 상태로 리디렉션 되더라도 Grails Web Flow가 실행 매개 변수를 변경하도록 강요하는 방법이 있습니까? 아니면 내 자신의 매개 변수를 URL에 넣을 수 있습니까?

나는 그 일을하는 방법을 찾았습니다. 두 개의 채우 멤버 상태를 사용하십시오 - Fillmember1과 Fillmember2, 둘 다 같은 일을하고 하나는 다른 것을 리디렉션합니다. 그러나 버튼을 뒤로와 올 때 실제 상태를 구별 할 수 있으려면 액션 상태가 하나 더 필요합니다. 이 구성은 작동하지만 더 쉬운 방법을 선호합니다.

답변 주셔서 감사합니다

도움이 되었습니까?

해결책

지금까지 내가 찾은 유일한 해결책은 내가 언급 한 솔루션입니다. 정확히 동일한 작업을 수행하는 두 개의보기와 일부 상태 정보를 사용하여 일부 상태 정보를 사용하여 처리 된 구성원을 제대로 구별하기가 어려울 것입니다). 코드는 다음과 같습니다.

def someFlow = {
   ...
   fillGroup {
      on("addMember"){
         ...
      }.to "fillMemberLogic"
   }
   fillMemberLogic {
      action {
         ...
         flow.stateinf += 1
         if(flow.stateinf%2 == 1)
            return gotoFillMember1()
         else
            return gotoFillMember2()
      }
      on("gotoFillMember1").to "fillMember1"
      on("gotoFillMember2").to "fillMember2"
   }      
   fillMember1 {
      on("addMember") {
         ...
      }.to "fillMemberLogic"
      on("goToCart").to "showCart"
   }
   fillMember2 {
      on("addMember") {
         ...
      }.to "fillMemberLogic"
      on("goToCart").to "showCart"
   }
   showCart {
      ...
   }
}

모든 멤버마다보기가 변경되므로 실행 매개 변수도 변경되고 URL은 모든 멤버마다 다릅니다. Firefox는 URL에 따라 보는 페이지를 구별하므로 뒤쪽 및 전진 버튼을 사용하는 모든 멤버를 통해 앞뒤로 이동할 수 있습니다.

웹 흐름은 현재 흐름 상태 상태와 URL을 매핑합니다. 따라서 몇 번의 백 버튼 푸시 후 처리중인 현재 멤버를 쉽게 구별 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top