拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 SpringMVC和Thymleaf如何使表单输入和值表在同一页面上?

SpringMVC和Thymleaf如何使表单输入和值表在同一页面上?

白鹭 - 2022-02-16 2102 0 0

我想插入一组值并在同一页面上显示插入资料的串列。我应该在控制器类中做什么?

这是我所有的代码

用户控制器.java

package com.crud.controll;

import com.crud.model.UserEntity;
import com.crud.service.UserDao;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;


@Controller
public class UserController {
    
    private final UserDao userDao;

    public UserController(UserDao userDao) {
        super();
        this.userDao = userDao;
    } 
    
    @GetMapping("/home")
    public String Home(Model model) {
        
        List<UserEntity> users = userDao.findBookAll();
        model.addAttribute("users", users);
        model.addAttribute("userForm", new UserEntity());
        return "display";
    }

    @PostMapping("/home")
    public String createUser(@ModelAttribute UserEntity userEntity, Model model) {
        
    userDao.createANewUser(userEntity);
        
    return "display";
    }
}

所以,这就是我想要的页面

Spring MVC 和 Thymleaf 如何使表单输入和值表在同一页面上?

uj5u.com热心网友回复:

我认为如果您按如下方式更新方法会很容易:

   @GetMapping("/home")
    public Model Home(Model model){
        
        List<UserEntity> users = userDao.findBookAll();
        model.addAttribute("users", users);
        model.addAttribute("userForm", new UserEntity());
        return model;
    }

uj5u.com热心网友回复:

我推荐Post/Redirect/Get pattern

如果您不需要有关插入用户的信息,请使用:

@PostMapping("/home")
public String createUser(@ModelAttribute UserEntity userEntity, Model model) {
        
        userDao.createANewUser(userEntity);
        
        return "redirect:/home";
    }

如果您需要有关插入用户的信息,可以使用 flash 属性:

@PostMapping("/home")
public RedirectView createUser(@ModelAttribute UserEntity userEntity, Model model, RedirectAttributes redirectAttributes) {
        
        userDao.createANewUser(userEntity);
        
        redirectAttributes.addFlashAttribute ("newUser", userEntity);

        return new RedirectView("/home", true);
    }

并在Home方法使用中:

 @GetMapping("/home")
 public String Home(Model model, HttpServletRequest request){
            
            List<UserEntity> users = userDao.findBookAll();
            model.addAttribute("users", users);
            model.addAttribute("userForm", new UserEntity());


            Map<String, ?> inputFlashMap = 
            RequestContextUtils.getInputFlashMap(request);
            if (inputFlashMap != null) {
                UserEntity newUser = (UserEntity) inputFlashMap.get("newUser");
                model.addAttribute("newUser", newUser);
            }
 
            return "display";
        }

或者您可以投入newUser财产userForm填写表格。

有关 flash 属性的更多信息:链接也许有更好的方法来提取Home方法中的闪存属性。

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *