【问题标题】:Using Jparepository's FindAll method with ModelAndView将 Jparepository 的 FindAll 方法与 ModelAndView 一起使用
【发布时间】:2017-01-24 01:17:41
【问题描述】:

我的 UserController 类:

package org.peronalitymeet.controller;

import org.peronalitymeet.entity.User;
import org.peronalitymeet.entity.request.AddUserRequest;
import org.peronalitymeet.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class UserController {

    private UserRepository userRepository;

    @Autowired
    public UserController(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    @RequestMapping(value="/users", method = RequestMethod.GET)
    public List<User> findAllUsers(){
        return userRepository.findAll();
    }

    @RequestMapping(value="/signup", method = RequestMethod.POST)
    public void addUser(@RequestBody AddUserRequest addUserRequest){
        User user = new User();
        user.setFirstname(addUserRequest.getFirstname());
        user.setSurname(addUserRequest.getSurname());
        userRepository.save(user);
    }

}

我的问题是,现在如果我打开 localhost:8080/users URL, 我将以 JSON 格式获取我的所有用户。之前我跟着一个 Spring mvc 教程,在那里他们使用 ModelAndView 方法在调用 URL 时自动打开一个 jsp 页面。

有什么方法可以使用 FindAll Users() 并同时打开一个 jsp 或 html 页面并在其中列出该方法的结果?

【问题讨论】:

    标签: java rest model-view-controller spring-boot annotations


    【解决方案1】:

    @RestController 是一个元注释,它告诉 Spring 返回它按原样返回给用户的文本。相当于将@ResponseBody @Controller 添加到您的班级。

    如果你想用 JSP 做点什么,你的类应该和我下面的类似。我只是更改了/users 端点,但这个想法将适用于任何地方。

    package org.peronalitymeet.controller;
    
    import org.peronalitymeet.entity.User;
    import org.peronalitymeet.entity.request.AddUserRequest;
    import org.peronalitymeet.repository.UserRepository;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.Controller;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.servlet.ModelAndView;
    
    
    import java.util.List;
    
    @Controller
    public class UserController {
    
        private UserRepository userRepository;
    
        @Autowired
        public UserController(UserRepository userRepository) {
            this.userRepository = userRepository;
        }
    
        @RequestMapping(value="/users", method = RequestMethod.GET)
        public ModelAndView findAllUsers(ModelAndView mav){
            List<User> users = userRepository.findAll();
            mav.addObject("users", users);
            mav.setViewName("users");
            return mav;
        }
    
        @ResponseBody
        @RequestMapping(value="/signup", method = RequestMethod.POST)
        public void addUser(@RequestBody AddUserRequest addUserRequest){
            User user = new User();
            user.setFirstname(addUserRequest.getFirstname());
            user.setSurname(addUserRequest.getSurname());
            userRepository.save(user);
        }
    
    }
    

    然后设置名为users.jsp 的视图页面以显示users 变量中的项目,您应该进行设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-19
      • 2012-05-25
      • 1970-01-01
      • 2020-03-09
      • 2017-04-18
      • 2019-08-21
      • 2017-03-07
      • 2021-05-20
      相关资源
      最近更新 更多