Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Boot@RestController无响应_Java_Jquery_Rest_Spring Boot - Fatal编程技术网

Java Spring Boot@RestController无响应

Java Spring Boot@RestController无响应,java,jquery,rest,spring-boot,Java,Jquery,Rest,Spring Boot,我从Spring和REST应用程序开始。目前,我正在自己开发一个应用程序,我陷入了困境 该应用程序就像标准的Spring Boot项目一样被划分。所有控制器都包含在web包中。 其中一个“标准”控制器负责处理HTTP请求并返回HTML网站。我添加了一个REST控制器,该控制器应响应来自第一个控制器的POST请求,但我收到一个404错误 它在代码中是什么样子的 @RestController @RequestMapping("/users") public class UserRestContro

我从Spring和REST应用程序开始。目前,我正在自己开发一个应用程序,我陷入了困境

该应用程序就像标准的Spring Boot项目一样被划分。所有控制器都包含在
web
包中。 其中一个“标准”控制器负责处理
HTTP
请求并返回
HTML
网站。我添加了一个
REST
控制器,该控制器应响应来自第一个控制器的
POST
请求,但我收到一个
404
错误

它在代码中是什么样子的

@RestController
@RequestMapping("/users")
public class UserRestController {
    @Autowired
    private UserService userService;


    @RequestMapping(value = "/user", method = RequestMethod.POST,  consumes = "application/json", produces = "application/json")
    public ResponseEntity<?> getUser(@RequestParam("userId") String userId, Errors errors) {
        AjaxUser response = new AjaxUser();

        if (errors.hasErrors()) {
            response.message = errors.getAllErrors().stream().map(x -> x.getDefaultMessage()).collect(Collectors.joining(","));

            return ResponseEntity.badRequest().body(response);

        }

        response.setUser(userService.getUserById(Integer.getInteger(userId).intValue()));

        return ResponseEntity.ok(response);

    }

    private class AjaxUser {
        private User user;
        private String message;

        public void setUser(User user) {
            this.user = user;
        }

        public void setMessage(String message) {
            this.message = message;
        }

        public String getMessage() {
            return message;
        }

        @Override
        public String toString() {
            return "User { id:" + user.getId() + ", Name: " + user.getName() + ", surname: " + user.getSurname() + "}";
        }
    }
}
@RestController
@请求映射(“/users”)
公共类UserRestController{
@自动连线
私人用户服务;
@RequestMapping(value=“/user”,method=RequestMethod.POST,consumes=“application/json”,products=“application/json”)
公共响应属性getUser(@RequestParam(“userId”)字符串userId,错误){
AjaxUser响应=新的AjaxUser();
if(errors.hasErrors()){
response.message=errors.getAllErrors().stream().map(x->x.getDefaultMessage()).collect(收集器.加入(“,”);
返回ResponseEntity.badRequest().body(响应);
}
response.setUser(userService.getUserById(Integer.getInteger(userId.intValue()));
返回ResponseEntity.ok(响应);
}
私有类AjaxUser{
私人用户;
私有字符串消息;
公共void setUser(用户){
this.user=用户;
}
公共无效设置消息(字符串消息){
this.message=消息;
}
公共字符串getMessage(){
返回消息;
}
@凌驾
公共字符串toString(){
返回“User{id:+User.getId()+”,Name:“+User.getName()+”,姓氏:“+User.getnames()+”}”;
}
}
}
从.js文件中,我发送了一个ajax查询,该查询将触发rest控制器,代码如下:

function sendUserId(id) {
    var user = {};
    user["userId"] = id;

    console.log("USER: ", user);

    $.ajax({
        type: "POST",
        contentType: "application/json",
        url: "/users/user",
        data: JSON.stringify(user),
        dataType: 'json',
        cache: false,
        timeout: 100000,
        success: function (user) {

            var json = "<h4>Ajax Response</h4><pre>"
                + JSON.stringify(user, null, 4) + "</pre>";

            console.log("SUCCESS : ", user);

        },
        error: function (e) {

            var json = "<h4>Ajax Response</h4><pre>"
                + e.responseText + "</pre>";

            console.log("ERROR : ", e);
        }
    });
}
函数sendUserId(id){
var user={};
用户[“userId”]=id;
console.log(“用户:”,用户);
$.ajax({
类型:“POST”,
contentType:“应用程序/json”,
url:“/users/user”,
数据:JSON.stringify(用户),
数据类型:“json”,
cache:false,
超时:100000,
成功:功能(用户){
var json=“Ajax响应”
+stringify(user,null,4)+“”;
console.log(“成功:”,用户);
},
错误:函数(e){
var json=“Ajax响应”
+e.responseText+“”;
日志(“错误:”,e);
}
});
}
userId
由jQuery,
console.log
显示现有和正确的值从html中获取

注意:存在一个标准用户
@Controller
,负责显示用户列表,它工作正常,在向
REST
控制器发送用户id时出现问题。它的行为就像
REST
控制器不存在,浏览器返回
404状态响应
。顺便说一句,页面使用Spring安全登录等

有人能帮忙吗


BR Konrad

控制器正在查找js请求url中缺少的请求参数


控制器正在寻找js请求url中缺少的请求参数


您可以按如下所示的id获取用户:

@RequestMapping(value=“{id}”,method=RequestMethod.GET)
公共响应属性get(@PathVariable(“id”)int-id){
User=userService.findById(id);
if(user==null){
返回新的ResponseEntity(未找到HttpStatus.NOT_);
}
返回新的响应属性(用户,HttpStatus.OK);
}
所以您的rest入口点是/users/userid,例如:/users/1


从帖子中找到此项,您可以通过id获取用户,如下所示:

@RequestMapping(value=“{id}”,method=RequestMethod.GET)
公共响应属性get(@PathVariable(“id”)int-id){
User=userService.findById(id);
if(user==null){
返回新的ResponseEntity(未找到HttpStatus.NOT_);
}
返回新的响应属性(用户,HttpStatus.OK);
}
所以您的rest入口点是/users/userid,例如:/users/1


根据函数参数的问题,REST控制器应该使用字符串参数,然后将其解析为JSON对象,响应也应该是字符串。主题可以关闭,感谢大家的参与。

基于函数参数的问题,REST控制器应该使用字符串参数,然后将其解析为JSON对象,响应也应该是字符串。主题可以结束,谢谢大家的参与。

我检查了很多可能性,但仍然没有结果。你知道如何重建我的js文件吗?我检查了很多可能性,但仍然没有结果。你知道如何重建我的js文件吗?它应该发送请求参数?
/users/user?userId=1
@RequestMapping(value = "{id}", method = RequestMethod.GET)
public ResponseEntity<User> get(@PathVariable("id") int id) {
User user = userService.findById(id);

if (user == null) {
return new ResponseEntity<User>(HttpStatus.NOT_FOUND);
}

return new ResponseEntity<User>(user, HttpStatus.OK);
}