2016-08-06 8 views
0

Ich habe ein Formular Kreditkarteninformationen Daten für die Einreichung:Warum wird onSubmitComplete() nach dem Senden von FormPanel nicht ausgeführt?

<g:FormPanel ui:field="creditCardForm" action="/app/create-credit-card" method="post"> 
    <g:HTML> 
     <input data-braintree-name="number" value="4111111111111111"/> 
     <input data-braintree-name="cvv" value="100"/> 

     <input data-braintree-name="expiration_date" value="10/20"/> 

     <input data-braintree-name="postal_code" value="94107"/> 
     <input data-braintree-name="cardholder_name" value="John Smith"/> 
    </g:HTML> 
    </g:FormPanel> 

aus irgendeinem Grund Aber die SubmitCompleteHandler kommt nicht in die Tat umzusetzen, wenn die POST getan wird:

this.creditCardForm.addSubmitHandler(new SubmitHandler() { 

    @Override 
    public void onSubmit(SubmitEvent event) { 
     LOGGER.fine("onSubmit()"); 
    } 
}); 

this.creditCardForm.addSubmitCompleteHandler(new SubmitCompleteHandler() { 
    @Override 
    public void onSubmitComplete(SubmitCompleteEvent event) { 
     LOGGER.fine("complete .."); 
     LOGGER.fine("Submit result: " + event.getResults()); 
    } 
}); 

Die Servlets Resturns nur String und schreibt einige Debug-Nachrichten:

public class CreateCreditCardServlet extends HttpServlet implements Servlet { 

    private final static Logger LOGGER = Logger.getLogger(CreateCreditCardServlet.class.getName()); 

    @Override 
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException {   LOGGER.debug("#########################################################"); 
     LOGGER.debug("doPost"); 
     LOGGER.debug("#########################################################"); 
     resp.getOutputStream().println("This is servlet response"); 
    } 
} 

Ich sehe die Antwort comin g im Entwickler-Tool, aber warum wird der Handler nicht aufgerufen?

Antwort

1

Von der FormPanel Dokumentation:

Der Back-End-Server erwartet wird, mit einem Content-Type von 'text/html' antworten, dass der Text als HTML behandelt wird zurückgegeben Bedeutung. Wenn vom Server ein anderer Inhaltstyp angegeben wird, ist das Ergebnis HTML, das im onFormSubmit-Ereignis gesendet wird, in -Browsern nicht vorhersehbar, und das Ereignis onSubmitComplete wird möglicherweise überhaupt nicht ausgelöst.

also im Servlet müssen Sie so etwas tun:

resp.setContentType("text/html") 
Verwandte Themen