Spring Mvc控制器获取端点不重定向

Spring Mvc控制器获取端点不重定向,spring,spring-mvc,Spring,Spring Mvc,你好,我在我的控制器课程中遇到了一些问题。所有的请求都很好,除了这个请求,因为某种原因拒绝将我重定向到另一个页面,尽管据我所知,我做的一切都很好。 这是我的控制器类。 问题在于beginReservation端点 package movie_manager.web.presentation; import movie_manager.model.dto.MovieDto; import movie_manager.model.dto.ReservationDto; import movie_m

你好,我在我的
控制器
课程中遇到了一些问题。所有的请求都很好,除了这个请求,因为某种原因拒绝将我重定向到另一个页面,尽管据我所知,我做的一切都很好。 这是我的控制器类。 问题在于
beginReservation
端点

package movie_manager.web.presentation;

import movie_manager.model.dto.MovieDto;
import movie_manager.model.dto.ReservationDto;
import movie_manager.model.dto.UserDto;
import movie_manager.model.pojo.FormPojo;
import movie_manager.model.pojo.ReservationPojo;
import movie_manager.service.MovieService;
import movie_manager.service.ReservationService;
import movie_manager.service.UserService;
import movie_manager.web.session.SessionInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import javax.validation.Valid;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private SessionInfo sessionInfo;

    @Autowired
    private UserService userService;

    @Autowired
    private MovieService movieService;

    @Autowired
    private ReservationService reservationService;

    @GetMapping
    public ModelAndView userPage(){
        ModelAndView modelAndView = new ModelAndView("user");
        Collection<MovieDto> movies = movieService.getAll();
        modelAndView.addObject("movies", movies);
        return modelAndView;
    }

    @GetMapping("view_movie/{movieId}")
    public ModelAndView viewMovie(@Valid @PathVariable long movieId){
        ModelAndView modelAndView = new ModelAndView("view_movie");
        modelAndView.addObject("movie", movieService.get(movieId));
        return modelAndView;
    }

    @PostMapping("/make_reservation")
    public void makeReservation(@Valid @RequestBody FormPojo formPojo){
        MovieDto movieDto = movieService.get(formPojo.movieId);
        UserDto userDto = sessionInfo.getUser();
        ReservationDto reservationDto = new ReservationDto();
        reservationDto.movieDto = movieDto;
        reservationDto.userDto = userDto;
        reservationDto.userName = formPojo.userName;
        reservationService.add(reservationDto);
    }

    @GetMapping("/begin_reservation")
    public ModelAndView beginReservation(@Valid @RequestBody ReservationPojo reservationPojo) {
        ModelAndView modelAndView = new ModelAndView("reservation");
        MovieDto movieDto = movieService.get(reservationPojo.movieId);
        if(movieDto.availableSeats < reservationPojo.numberOfSeats)
            return new ModelAndView("notEnoughSeats");
        modelAndView.addObject("movie", movieDto);
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i< reservationPojo.numberOfSeats;i++){
            list.add(i);
        }
        modelAndView.addObject("numberOfForms", list);
        return modelAndView;
    }
}

package movie\u manager.web.presentation;
导入movie_manager.model.dto.MovieDto;
导入电影管理器.model.dto.ReservationDto;
导入movie_manager.model.dto.UserDto;
导入movie_manager.model.pojo.FormPojo;
导入电影_manager.model.pojo.ReservationPojo;
导入movie_manager.service.MovieService;
导入电影管理器.service.ReservationService;
导入movie_manager.service.UserService;
导入movie_manager.web.session.SessionInfo;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.web.bind.annotation.*;
导入org.springframework.web.servlet.ModelAndView;
导入javax.validation.Valid;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.Collection;
导入java.util.List;
@RestController
@请求映射(“/user”)
公共类用户控制器{
@自动连线
非公开的SessionInfo SessionInfo;
@自动连线
私人用户服务;
@自动连线
私人电影服务;
@自动连线
私人预订服务预订服务;
@GetMapping
公共模型和视图用户页(){
ModelAndView ModelAndView=新的ModelAndView(“用户”);
Collection movies=movieService.getAll();
添加对象(“电影”,电影);
返回模型和视图;
}
@GetMapping(“查看电影/{movieId}”)
公共模型和视图电影(@Valid@PathVariable long movieId){
ModelAndView ModelAndView=新的ModelAndView(“查看电影”);
modelAndView.addObject(“movie”,movieService.get(movieId));
返回模型和视图;
}
@邮戳(“/预订”)
公共void makeReservation(@Valid@RequestBody FormPojo FormPojo){
MovieDto MovieDto=movieService.get(formPojo.movieId);
UserDto UserDto=sessionInfo.getUser();
ReservationDto ReservationDto=新的ReservationDto();
reservationDto.movieDto=movieDto;
reservationDto.userDto=userDto;
reservationDto.userName=formPojo.userName;
添加(reservationDto);
}
@GetMapping(“/begin\u reservation”)
public ModelAndView beginReservation(@Valid@RequestBody ReservationPojo ReservationPojo){
ModelAndView ModelAndView=新的ModelAndView(“保留”);
MovieDto MovieDto=movieService.get(reservationPojo.movieId);
if(电影到可用座位数
所有其他端点都可以正常工作。并且成功地到达了有问题的端点。问题似乎与
ModelAndView
对象有关。页面保持静态,没有错误,什么都没有。我还要指出的是,似乎没有任何路径可以工作(即使是上面在其他端点中使用的路径)。
任何帮助都将不胜感激。

@RestController
不用于返回要解析的视图。它应该返回将写入响应主体的数据,因此包含
@ResponseBody
。当
@ResponseBody
已经是类级别的注释时,您不能有选择地禁用单个处理程序方法上的
@ResponseBody


原始答案在这里。

为什么要这样做?它是一个
@RestController
,用于指示它应该向客户端发送JSON/XML,而不是重定向。使用
@Controller
代替
@RestController
。发送一个JSON请求并作为回报呈现一个视图也有点奇怪。看看是否有帮助。