2011-07-05 4 views
2

저는 첫 번째 wicket 앱을 작성 중이며 오늘 내 첫 번째로드 블록을 만났습니다. 여기에 문제가 있습니다. AjaxSubmitLink가 포함 된 페이지가 있습니다. onSubmit 이벤트에서 setResponsePage를 사용하여 패널을로드합니다.Wicket - SetResponsePage 콜백이 실행되지 않습니다.

내 응용 프로그램의 홈페이지에서 하이퍼 링크 또는 탭 전환 (wicket-extensions의 기본 ITab 사용)과 같은 두 가지 방법으로 위에서 언급 한 페이지로 이동할 수 있습니다. 둘 다 동일한 생성자를 호출합니다 동일한 주장과 함께.

이제 하이퍼 링크를 사용하여 페이지로 이동하면 모든 것이 올바르게 작동합니다. 그러나 탭을 사용하여 페이지를 탐색하면 AjaxSubmitLink가 패널을로드하지 않습니다. Ajax 요청이 있고, 서버가 처리하는 것을 볼 수 있지만, 콜백이 실행되고 있지 않은 것 같습니다.

후자의 경우, 방화범이 치는 콘솔에서 내 Ajax 요청을 로깅하지 않습니다. 그것은 전 사건의 요청을 잘 기록합니다.

나는 힌트, 포인터 또는 뾰족 함을 여기에서 다소 비틀어 먹었습니까?

편집 : 링크를 선언하는 코드.

editLink = new AjaxSubmitLink("editLink") { 
      @Override 
      protected void onSubmit(AjaxRequestTarget target, Form<?> masterForm) { 
        setResponsePage(new EditPage(programId)); 
      } 
     }; 

편집 :

내가 좀 해결 방법을 발견 : 나는, 실패한 아약스 호출 대신 200

UPDATE의, 302을 반환하는 피들러로 만든 요청을 검사. 피들러 정보를 통해 setResponsePage 비헤이비어를 검색하면 나를 https://issues.apache.org/jira/browse/WICKET-1703으로 안내합니다.

어쨌든 링크에 대한 POST 요청이 엄격하게 필요하지 않았으므로 대신 원하는 동작을 얻으려면 GET을 사용했습니다.

흥미로운 찾기를 사용하여 찾기 : 잘못된 유형의 application/x-www-form-urlencoded 대신 multipart/form-data가 전송됩니다.

나는 실제 문제에 관해서는 어둠 속에서 일종의 설명을 주셔서 감사합니다.

+1

'setResponsePage는()'웹 페이지가 아닌 웹 구성 요소 (이 경우 패널)를 사용합니다. 몇 가지 코드가 도움이 될 수 있습니까? – Marcelo

+0

코드가 제공됩니다. 게시 할 부분이 확실하지 않습니다. 또한 피들러는 요청이 302와 함께 돌아오고 있다고 나에게 알려줍니다. – Sans

+0

AjaxSubmitLink를 사용하는 것이 다른 페이지로 리디렉션되는 경우 어떤 용도로 사용합니까? 어쨌든 전체 페이지를 다시로드해야한다면 정상적인 SubmitLink를 사용하지 않는 것이 어떻습니까? –

답변

0

setResponsePage()에는 .class 파일이나 인스턴스화 된 클래스가 있어야합니다. 같은

NextPage np = new NextPage(int a,int b); 
.... 
setResponsePage(np); 

또는

setResponsePage(NextPage.class); 
+0

NextPage에 값을 전달해야 할 필요가있을 수도 있습니다. 그런 다음 setResponsePage (새 NextPage (var1))를 사용할 수 있습니다. – BlondCode

관련 문제