Angular POSTリクエストを使用してパラメータをTomcatサーバー、Spring Frameworkに渡そうとしています。どういうわけか、パラメータが送信されたときにそのパラメータが存在することがわかりますが、何らかの形でバックエンドに到着/適切に取得されません。ここでAngular2コードは次のとおりです。Angular2がPOST要求のパラメータを渡さない
addCompany() {
console.log("addCompany button clicked!");
console.log("company name: " + this.input);
let nameId = this.input;
let body = JSON.stringify({ input: nameId });
let headers = new Headers({ 'Content-Type': 'application/json', 'X-CSRF-TOKEN':this.getToken() });
console.log("csrf token: " + this.getToken());
let options = new RequestOptions({ headers: headers });
this.http.post('http://localhost:8080/views/addcompany', body, options).toPromise()
.then(() => {
console.log("company added!");
this.reloadList();
});;
}
私はパラメータのnull
を取得しています春にそれを取得しようとしています:
@RequestMapping(value = "/addcompany", method = RequestMethod.POST)
@ResponseBody
public void addCompany(HttpServletRequest request,
HttpServletResponse response) {
String nameId = request.getParameter("input");
eventService.addCompany(nameId);
}
また、私はこの方法を試してみました:
@RequestMapping(value = "/addcompany", method = RequestMethod.POST)
@ResponseBody
public void addCompany(Model model, @RequestParam("input") String nameId) {
eventService.addCompany(nameId);
}
そしてAngularコードでは、私はどこでもコンマを変更しようとしています:
let nameId = this.input;
let body = JSON.stringify({ 'input': nameId });
など
私はこの1つ試してみました:私はPOJO
を作成しようとしましたJB Nizet
提案後Angular2 - Http POST request parameters
を:
public class Company {
public String input;
public Company() {
this.input = "";
}
public String getInput() {
return this.input;
}
public void setInput(String input) {
this.input = input;
}
}
私@Configuration
ファイルに登録します
@Bean
public Company getCompany(){
return new Company();
}
リクエストメソッドを変更しました次へ:その後
@RequestMapping(value = "/addcompany", method = RequestMethod.POST)
@ResponseBody
public void addCompany(Company company) {
eventService.addCompany(company.input);
}
私はinput=null
と方法でCompany
オブジェクトを取得しています。
は、それから私は@Configuration
からCompany
@Bean
の登録を解除し、次へのリクエストメソッドを変更しようとしました:
@RequestMapping(value = "/addcompany", method = RequestMethod.POST)
@ResponseBody
public void addCompany(@RequestBody Company company) {
eventService.addCompany(company.input);
}
しかし、その後、私は415 (Unsupported Media Type)
エラーを取得しています。 pom.xml
で
私は以下のジャクソンのインポートを持っている:第二ジャクソンバージョンのためにそれを代入
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.10</version>
</dependency>
はこの問題を解決:
<properties>
...
<jackson.version>2.7.5</jackson.version>
</properties>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
以下のように私はあなたが提案する方法を試してみましたが、私がnullに等しいパラメータ「INPUT」になりましたPOJOを取得しています。 –
したがって、バインディングを固定する必要があると思います。確かにわかりません。 –
あなたの質問を編集して、このPOJOのコードとaddCompanyメソッドの新しいコードを投稿してください。また、null以外の入力が実際にブラウザによって送信されることを確認してください。 –