우리는 스트럿츠 1.2.2를 사용하고 있으며 여기에 상황이 있습니다. 그래서 FormA와 FormB의 두 가지 형식이 있습니다. 두 개의 ActionA 및 ActionB도 있습니다.스트럿츠 1.2 - 한 동작에서 다른 동작으로 값 전달
이제 ActionA가 호출되면 FormA가 제출 된 Bean이됩니다. 모든 처리를 수행하고 양식을 저장하며 OrderId를 만들고 성공하면 ActionB로 전달합니다. 그런 다음 ActionB가 OrderId를 기반으로 FormB를 채운 후 다음 jsp로 전달합니다.
내용이 매우 다르기 때문에 두 작업이 양식을 공유하는 것을 원하지 않으며 양식이 jsp 페이지에서 나타내는 내용 만 나타내도록하고 싶습니다. 또한 모든 페이지에서 Db에 콘텐츠를 저장합니다. 흐름에는 5 페이지가 있고 한 페이지는 2 페이지 뒤에 나올 수 있습니다. 다시 돌아와서 1 페이지부터 시작하십시오. 그러나 페이지 1과 페이지 2는 DB와 표시에서 데이터를 검색해야합니다. 따라서 orderID가 존재할 경우 우리는 DB로부터 데이터를 가져 와서 해당 orderId를 기반으로 양식을 채 웁니다.
그러나 한 주문에서 다른 주문으로이 주문을 전달하는 쉬운 방법을 찾지 못했습니다.
컨트롤이 ActionB에 도달 할 때까지 완전히 새로운 요청 개체가 있으므로 ActionA의 끝에 request.setAttribute()
을 사용할 수 없습니다. 나는 하나의 행동에서 다른 행동으로 진행되는 앞으로의 행동을 추측하고있다. 그러나 jsp로 전달하면 요청은 유지됩니다.
사람이 북마크 URL을 시도 할 수 있습니다 다음 해당 페이지는 단순히 세션에서 마지막으로 저장 OrderID를 데리러 것이며, 그 처리하려고으로 session.setAttribute()
으로 세션에서 주문 ID를 저장하지 마십시오.
또한 공유 할 수 없으므로 formbeans에 넣을 수는 없습니다.
하나의 옵션은이를 URL에 매개 변수로 전달하는 것입니다. ActionB? OrderId = 89. 그러나 단점은 누군가가 URL에서 orderId를 변경하고 임의의 orderId에 대한 데이터를 가져올 수 있다는 것입니다. 다른 고객에게 속한 주문을 볼 수있는 권한이없는 사람을 방지하기 위해 항상 수표를 넣을 수는 있지만 현재로서는 복잡한 프로세스입니다. 또한 Struts 1.2.2에서 새로운 ActionForward 객체를 프로그래밍 방식으로 생성 한 다음 현재 경로의 끝에 "? OrderId = 89"를 명시 적으로 추가해야한다고 생각합니다.
도움이 되었습니까?