2017-11-01 5 views
0

私は、クライアントからサーバーへのforminputタグで渡す必要がある非常に大きなStringを持っています。アップロードは次のようになり、一方、JavascriptでSpring Controllerにアップロードするためのファイルを作成します。

document.getElementById("editorText").value = quill.getText(); 

<form action="/someEndpoint" method="post"> 
    <input class="btn btn-success btn-lg" style="margin-top: 15px;" type="submit" th:value="#{mSave}"/> 
    <textarea style="visibility:hidden" id="editorText" name="editorText"></textarea> 
</form> 

これに伴う問題は、アップロードがときに、このように動作しないことです今まで私はちょうどこのようなJavaScriptのVARとして、それを渡されましたquill.getText()が大きすぎます。私はマルチパートファイルを介してアップロードを処理したいと思います。

だから私はこのケースで必要なものを、quill.getText()からテキストを取るjavascriptのコードである。このように見えるコントローラエンドポイントに上記のHTML formでアップロードするファイル(好ましくは.xmlファイル)とサーバーにこのファイルを作成します。

@RequestMapping(value = "/someEndpoint", method = RequestMethod.POST) 
public String handleFileUpload(final Model model, @RequestParam("editorText") String editorText){ 

//handling stuff 
} 

私はvar xml = jQuery.parseXML(quill.getText())の行に沿って何か試しましたが、静かに動作させることはできませんでした。 アップロードのために文字列を.xmlファイルにパックする最も簡単な方法は何ですか?

PS:変更テキストフィールドにHTML inputquill.getText()thisライブラリ

編集1を参照しています。

答えて

0

投稿したコードでは、入力テキストにクイルテキストを割り当てていることがわかります。投稿hereが表示されている場合は、入力タイプのフィールドに最大限の制限があります。

ただし、テキスト領域には無制限の文字数を入れることができます。だから、あなたは隠されたテキストエリア<textarea style="visibility:hidden" id="quillText"></textarea>を作り、それにquill.getText()の値を割り当ててみることができますか?

サーバー側で完全なテキストを表示する必要があります。

EDIT:

次のコードは、私のために働きました。

UI:サーバー側で

<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> 
    <link href="https://cdn.quilljs.com/1.1.6/quill.snow.css" rel="stylesheet"> 
    <script src="https://cdn.quilljs.com/1.1.6/quill.js"></script> 

<form action="submitQuill" method="post"> 
    <!-- Create the editor container --> 
    <input type='submit' onclick="javascript:submitForm()"/> 
    <div id="editor"> 
    <p>Hello World!</p> 
    <p>Some initial <strong>bold</strong> text</p> 
    <p><br></p> 
    </div> 
    <textarea style="visibility:hidden" id="editorText" name="editorText"></textarea> 

</form> 
    <!-- Initialize Quill editor --> 
    <script> 
    var quill = new Quill('#editor', { 
     theme: 'snow' 
    }); 

    function submitForm(){ 
     var quillText = quill.container.firstChild.innerHTML; 
     $("textarea#editorText").val(quillText); 
     document.form.submit(); 
    } 

    </script> 

:コンソール上

@RequestMapping(value="/submitQuill") 
    public ModelAndView submitQuill(@RequestParam String editorText){ 
     System.out.println("Editor Text = "+editorText); 
     return new ModelAndView("quill"); 
    } 

出力:

Editor Text = <p>Hello World!</p><p>Some initial <strong>bold</strong> text</p>< 
p><br></p> 
+0

私もまだこの可能性について考えていませんでした!私は試しましたが、動作させることができませんでしたが、バックエンドは依然として必要なパラメータがないという例外を投げています。 –

+0

興味深い!フォーム内に ''のようなテキストエリアを作成し、 '@RequestParam(" quillText ")String quillText'として取得しようとすると、それはあなたに何を与えるのですか? – amdg

+0

私はあなたのヒントに従って、私がそれを変更した方法で私の質問のhtmlを編集しました。このように、私はバックエンドで以下の例外を受け取ります: 'org.springframework.web.bind.MissingServletRequestParameterException:必須の文字列パラメータ 'editorText'が存在しません。 ' –

関連する問題