前提・実現したいこと
PHPプロジェクトの画面からJavaプロジェクトの画面に遷移する際に、もともとGETメソッドで遷移していたのを、POSTメソッドに変更する必要があります。
JavaScriptでwindow.open()後にformタグを作成しbodyに追加してpostでsubmitすることにより上記実現しようとしています。
発生している問題・エラーメッセージ
遷移時、ブラウザのエラーページに遷移し、Cannot POST (URL)のメッセージが表示されます。
該当のソースコード
参考:https://nantokaworks.com/p696/
遷移元画面
JavaScript
1 var w = window.open("about:blank","newWindow"); 2 3 //フォーム作成 4 var form = document.createElement("form"); 5 form.target = "newWindow"; 6 form.action = "http://localhost/sample/index"; 7 form.method = 'post'; 8 var query =[{key:"sample1",value:sample1},{ key:"sample2", value:sample2}]; 9 10 //パラメータをinputに追加 11 for(var i=0; i<query.length;i++) { 12 var kv = query[i]; 13 var key = kv["key"]; 14 var val = kv["value"]; 15 16 if (key){ 17 var input = document.createElement("input"); 18 val = ( val != null ? val : "" ); 19 input.type = "hidden"; 20 input.name = key; 21 input.value = val; 22 form.appendChild( input ); 23 } 24 } 25 26 // 一時的にbodyへformを追加。サブミット後、formを削除する 27 var body = document.getElementsByTagName("body")[0]; 28 body.appendChild(form); 29 form.submit(); 30 body.removeChild(form); 31 return w;
コントローラ
Java
1 @ResponseStatus(HttpStatus.OK) 2 @RequestMapping(value = "/sample/index", method = RequestMethod.POST) 3 public WebDocRootDto getInfo( 4 @PathVariable String sample1, 5 @PathVariable String sample2, 6 HttpServletRequest request) { 7 8 sampleRootDto result = sampleFacade.sampleDoc(sample1, sample2); 9 10 return result; 11 }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。