あるアプリケーション(スプリングブート)を別のアプリケーション(reactjs)から呼び出しようとしています。アプリケーションは、次のホストとポートで実行されています。私は春ブートに成功せずreactjsからログイン情報を送信しようとしています春ブーツ、http://localhost:8080 react.jsログインをSpringBootアプリケーションに接続できません
を使用して
- RESTアプリケーション、。
Reactjs:
import React from 'react'; export default class Login extends React.Component { constructor() { super(); this.state = { login:"", password:"" }; this.handleChange = this.handleChange.bind(this); } handleChange() { this.setState({login: this.state.login}); } render() { return ( <form role="form"> <div> <input type="text" name="login" onChange={this.handleChange} /> <input type="password" name="password"/> </div> <button onClick={this.login.bind(this)}>Login</button> </form> ); } login() { var xmlhttp = new XMLHttpRequest(); // new HttpRequest instance var url = "http://localhost:8080/test/login" xmlhttp.open("POST", url); xmlhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); xmlhttp.send(JSON.stringify({login: this.state.login})); } }
と春ブーツ:
@CrossOrigin(origins = "http://localhost:9000") @RequestMapping(value = "/test/login") public Boolean testLogin(@RequestParam String login) { if (login.equals ("ajt")) return true; else { return false; } }
私は2つのアプリがreactjsは私に私が提出するエラー400、、のコンソールを与えるにもかかわらずのために接続されていることがわかります春のブートのアプリは私に教えてくれます:
Resolved exception caused by Handler execution: org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'login' is not present
私は春のブート側からは、 react.js経由で送信されたものは除きます。
ps:私と一緒にいて、私は約6ヶ月間コーディングしています。
hehe、私はちょうど最後のものにもう一度コメントしました:) –
私はよく公式化されていないと感じたので、私はこの新しい質問を投稿しました。それはもっと興味を引くかもしれないと考えた。私はすでにこのメソッドをテストし、次のエラーを取得しています: '必須の要求本体がありません:public java.lang.Boolean com.common.web.TestController.testLogin(java.lang.String)' –
ああ、問題が表示されます。あなたの 'setState'は正しく動作していないので、あなたの州は決してログインデータを取得しません。原則として、コンソールで快適なデバッグを行い、変数の値が期待どおりであることを確認します。'login'関数中にコードを一時停止し、' this.state.login'の値をテストすると、未定義であることがわかります。私はもっと詳細を与えるために私の答えを更新します... – gravityplanx