2016-08-06 6 views
0

私はクレジットカード情報データを提出するためのフォームを持っている:FormPanelを送信した後にonSubmitComplete()が実行されないのはなぜですか?

<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> 

しかしPOSTが行われたときに何らかの理由でSubmitCompleteHandlerは行動に付属していません:

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()); 
    } 
}); 

サーブレットresturnsをちょうどStringいくつかのデバッグメッセージを書き込みます:

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"); 
    } 
} 

私は応答を参照してくださいgの開発者ツールで、なぜハンドラが呼び出されないのですか? FormPanelドキュメントから

答えて

1

:バックエンドサーバが返されたテキストをHTMLとして扱われることを意味し、 「text/htmlの」のコンテンツタイプで応答することが期待されて

。 サーバーによって他のコンテンツタイプが指定されている場合、 のHTML onFormSubmitイベントで送信されたメッセージは、 ブラウザでは予測できず、onSubmitCompleteイベントはまったく発生しません。

ので、サーブレットにあなたはそのような何かをする必要があります。

resp.setContentType("text/html") 
関連する問題