2013-08-07 2 views
0

레거시 Tapestry 로그인 구성 요소에 새로운 요구 사항을 추가하여 로그인시 특정 오류 조건이 발생하면 팝업을 표시합니다. 페이지 새로 고침.Tapestry 5 - 하나의 시나리오에서 JSON을 가져 오거나 다른 시나리오에서 리디렉션합니다.

현재 로그인 구성 요소는 표준 Tapestry 양식 제출을 사용합니다. 즉, 양식 제출시 로그인 신임이 서버에 게시되고 로그인 처리가 수행되며 결과에 따라 Tapestry는 페이지 클래스, 또는 @InjectPage과 함께 주입 된 페이지 객체 - 표준 Tapestry 항목.

나는 그대로 현재의 논리를 떠날 필요 - (가)는 현재 수행 리디렉션하고 태피스트리를 유지 즉, 그러나 나는 또한 다음과 같은 엑스트라가 필요합니다

  1. POST 요청이
  2. AJAX를 통해 수행되어야합니다 결과가 새로운 오류 조건을 충족하면 일반 JSON이어야하므로 클라이언트는 팝업을 표시 할 수 있습니다.
  3. Tapestry에 대해 아무것도 모르는 다른 브라우저 기반 클라이언트에서 로그인 끝점을 호출 할 수 있어야하며 그 반대의 경우 Tapestry도 호출 할 수 있어야합니다. 그러나 Tapestry 리다이렉트가 작동해야한다. (이것이 가능하다면, 서버와 클라이언트 측 프레임 워크가 어떻게 리다이렉트 되는가?)뿐만 아니라 일반 JSON을 보내는 것도 가능하다.

내가 생각하는 (1)과 (2) 태피스트리 영역을 사용하여 달성하기 매우 간단하지만, I (3)에 맞는 방식을 볼 수 고군분투하고있다.는 HTTP를 제공하는 지원을 Tapestry에 수 (S) API를 호출을 통해 모든 유형의 웹 클라이언트에서 일반 JSON 응답뿐만 아니라 리디렉션을 제공하는 AJAX? 이것이 가능하다면 좋은 패턴이있는 것 같지만 대부분의 시간에 사람들이 태피스 트리 백엔드로 비 태피스 트리 렌더링 클라이언트를 사용하지 않기 때문에 어디서나 문서 나 예제를 찾을 수 없습니다.

이것이 가능하다면 지역 사회에 조언을 구하지 않고 나 자신을 걸어 보지 않으면 해킹과 함정이 나빠질 것이 예상됩니다. 따라서 어떤 조언이라도 대단히 감사하겠습니다!

답변

0
  1. 사용자 이름/암호를 사용할 수와 JSON 성공/오류를 반환하는 웹 서비스 만들기
  2. 이 onValidate() 이벤트
  3. 웹 서비스를 다시 사용을의에서 웹 서비스를 호출하는 AJAX 기반의 태피스트리 로그인 페이지 만들기 비 - 태피스트리 응용 프로그램의 경우
  4. 웹 서비스가 태피스 트리 응용 프로그램의 일부인 경우 webservice 래퍼를 통하는 대신에 Java LoginService를 태블릿 응용 프로그램에서 직접 호출 할 수 있습니다.
+0

예, 전체 솔루션을 다시 설계하고 리팩터링하는 것이 이상적으로는 가능하지만 내가 할 수 없다고 가정합시다. 나는 스크래치 솔루션보다 열등하다는 것을 알고 있지만, 내 질문은 - 내가 원하는 것을 달성하기 위해 헤비급 리팩토링없이 레거시 코드를 수정하는 것이 가능한지, 아니면 단지 제약 조건에 비해 너무 열심히 싸울 것인가하는 것이 나의 질문이다. 프레임 워크? – davnicwil

+0

종종 Tapestry 페이지로 "끝점"을 만듭니다. 애플리케이션 외부에서 액세스 할 수있는 합리적으로 예측 가능한 URL이 있습니다. activate 이벤트 핸들러에서 JSONObject를 반환하거나 Response.sendRedirect()를 호출 할 수 있습니다. –

+0

구성 요소 이벤트 URL은 예측할 수 없으며 페이지 구조가 변경 될 때 변경 될 가능성이 큽니다. –

관련 문제