Javascript 必需的字符串参数';文本';不在场
我试图将一个字符串从我的视图发送到我的控制器,但我一直得到一个错误,即“文本”不存在 这是我的javascriptJavascript 必需的字符串参数';文本';不在场,javascript,java,angularjs,spring-mvc,spring-boot,Javascript,Java,Angularjs,Spring Mvc,Spring Boot,我试图将一个字符串从我的视图发送到我的控制器,但我一直得到一个错误,即“文本”不存在 这是我的javascript $scope.sendMsg = function(){ console.log($scope.my.message); data = {"text" : $scope.my.message}; $http({ method:'POST', data:data,
$scope.sendMsg = function(){
console.log($scope.my.message);
data = {"text" : $scope.my.message};
$http({
method:'POST',
data:data,
contentType: "application/json; charset=utf-8",
dataType:"json",
url:'/post-stuff'
}).then(function(response){
console.log(response);
});
}
我的休息控制器:
@RequestMapping(value= "/post-stuff", method=RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public ResponseEntity<PostTextResult> postStuff(@RequestParam(value= "text") String text){
System.out.println(text);
return new ResponseEntity<PostTextResult>(stuff.postTextContent(text), HttpStatus.OK);
}
@RequestMapping(value=“/post stuff”,method=RequestMethod.post,products=MediaType.APPLICATION\u JSON\u value,consumes=MediaType.APPLICATION\u JSON\u value)
@应答器
公共响应postStuff(@RequestParam(value=“text”)字符串文本){
System.out.println(文本);
返回新的ResponseEntity(stuff.postTextContent(text),HttpStatus.OK);
}
不确定Spring是否有办法将json{“text”:“some text”}
反译为原始字符串“some text”
。但是,@RequestParam
用于URL中的参数(http://foo.com/post-stuff?text=text+此处
)
POST
ed数据在正文中发送,因此您需要使用@RequestBody
注释。由于body是一个更复杂的类型,我会使用一个类,它可以很容易地提取值:
static class TextHolder {
private String text; // < name matters
// getter+setter omitted
}
public ResponseEntity<PostTextResult> postStuff(@RequestBody TextHolder text) {
System.out.println(text.getText());
return new ResponseEntity<PostTextResult>(stuff.postTextContent(text.getText()), HttpStatus.OK);
}
静态类TextHolder{
私有字符串文本;//<名称很重要
//省略getter+setter
}
public ResponseEntity postStuff(@RequestBody TextHolder text){
System.out.println(text.getText());
返回新的ResponseEntity(stuff.postTextContent(text.getText()),HttpStatus.OK);
}
您可以尝试将当前数据的前端更改为:
data = {params:{"text" : $scope.my.message}};
Spring需要知道请求有参数
或者,您可以尝试将控制器@RequestParam(value=“text”)字符串文本中的后端更改为@RequestBody字符串文本
检查之间的差异。在发送从查询参数中提取的@RequestParam
值之前,请尝试对数据进行字符串化。你没有<代码>数据
是主体,如json。谢谢。我把它改成@requestbody