2012-10-25 2 views
4

GWT : 브라우저에서 서블릿을 호출 할 수 있습니다. formpanel에서 호출하면 onSubmit을 호출 할 수 있습니다. 하지만 onSubmitComplete는 호출하지 않습니다. 새 창을 팝업 할 때, uri는 내 서블릿입니다.GWT formpanel이 onSubmitComplete를 호출하지 않습니다.

String URL= GWT.getModuleBaseURL()+"getType"; 
     FormPanel formPanel = new FormPanel(); 
     formPanel.setAction(URL); 
     formPanel.setEncoding(FormPanel.ENCODING_URLENCODED); 
     formPanel.setMethod(FormPanel.METHOD_GET); 

    formPanel.addSubmitHandler(new SubmitHandler(){ 

     @Override 
     public void onSubmit(SubmitEvent event) { 
      // TODO Auto-generated method stub 
      System.out.println(event.getSource()); 
     } 

    }); 
    formPanel.addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler() { 
      public void onSubmitComplete(SubmitCompleteEvent event) { 
       System.out.println("in"); 
       System.out.println(event.getResults()); 
      } 
     }); 
    formPanel.submit(); 

GWT.xml 
<servlet class="msp2.server.getType" path="/getType" /> 


web.xml 
    <servlet > 
<servlet-name>getType</servlet-name> 
    <servlet-class>msp2.server.getType</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>getType</servlet-name> 
    <url-pattern>/msp2_app/getType</url-pattern> 
</servlet-mapping> 

답변

0

양식 제출이 성공적으로 완료되면 onSubmitComplete가 호출됩니다. 양식 제출에 오류가 없는지 확인하십시오.

게시하려는 코드를 게시하십시오. 그것은 다른 사람들이 문제를 파악하는 데 도움이 될 것입니다.

또한은 FormPanel이 the javadoc에서 here

+0

나는 코드를 게시했다. 서블릿을 브라우저에 입력하여 호출 할 수 있습니다. 하지만 양식을 제출합니다. 제출 기능이 작동합니다. 제출이 완료되지 않았습니다. – user1415853

+0

GWT 1.6부터는 gwt.xml에서 서블릿을 구성 할 필요가 없습니다. 서블릿이 호출되고 서블릿에 예외가 없는지 확인하십시오. –

+0

서블릿에서 방금 간단한 숫자로 응답하고이 서블릿을 url을 입력하여 방문 할 수 있습니다. 그래서 서블릿이 작동하는 것 같습니다. – user1415853

2

을 제공하는 사용의 예를 시도 할 수 있습니다 : 백 엔드 서버가 'text/html과'의 내용 유형으로 응답 할 것으로 예상된다

을 의미 반환 된 텍스트는 HTML로 처리됩니다. 서버가 다른 content-type을 지정하면 onFormSubmit 이벤트에서 보낸 결과 HTML은 여러 브라우저에서 예측할 수 없으며 onSubmitComplete 이벤트가 전혀 실행되지 않을 수 있습니다.

는 응답이 다른 창에서 열립니다, 당신이 당신의 FormPanel에 특정 대상를 설정하지 않은 말을 감안할 때, 아마 서버가하지 않는 경우의

;charset=와 유사하거나 response.setContentType("text/html") (매개 변수)

3

이 질문은 오래된 질문인데, 나는 똑같은 문제가 있었으며 그 답은 해결책이 아닙니다. FormPanel.submit()을 호출 한 후 응답이 새 탭에서 열리고 onSubmitComplete()이 호출되지 않습니다.

해결 방법은 내 FormPanelsubmit()이라고하는 대화 상자에 추가되지 않았습니다. 양식은 전체적으로 Hidden 필드로 구성되어 있기 때문에 누른 페이지의 단추에 따라 값이 설정되므로 내 FormPanel에는 사용자가 선택할 수있는 값이있는 양식 위젯이 실제로 포함되어 있지 않으므로 추가 할 필요가 없습니다 창문 어디든지.

응답이 새 창에서 열리고 onSubmitComplete()이 호출되지 않는 원인입니다. 나는 패널에 내 DialogBox을 추가했고 그 후에는 제대로 작동했습니다.

1

나는 또한 내가 찾은

모든 답 새 창을 팝업 줘야

을 통해 패널 형태의 위젯을 추가하거나 위젯 대신은 FormPanel 자체를 추가하는 방법에 대한했다 싸워 왔어 액션 링크를 절대적으로 만들지 않았고 다른 것들은 끈적 거리지 않았습니다.정말 시도의 시간 후에 나를 위해 일한 솔루션은 독서의 javadoc

public FormPanel(String target) {...} 

지정하는 null을 제출의 결과를받을 수 < iframe을 >의 이름을 대상으로, 또는 @param했다 현재 페이지 는

간단히은 FormPanel 생성자에 "_self"를 통과

교체

FormPanel form = new FormPanel("_self"); 

또는 .setTarget (...) 메소드를 통해 나중에 설정하십시오. Whoa - 팝업을 열지 않습니다 (Chrome에서 확실히 차단됨) 메소드에 양식을 만들고 DOM에 추가하지 않고 제출하면 예상대로 작동합니다.

0

나는 또한 FormPanel의 작업 URL을 설정하지 않은 것으로 밝혀진 동일한 문제가있었습니다.

final FormPanel formPanel = new FormPanel(); 
formPanel.setAction("/test"); 
관련 문제