java - Spring MVC怎么实现提交表单后跳转?
PHP中文网
PHP中文网 2017-04-18 10:56:20
0
3
715

我想在addItem的页面输入了信息之后点提交,可以提交表单然后跳转到queryItems的页面。请问要怎么写?是在Controller里写还是在JSP页面里写?
基础问题,刚开始学,求回答,非常感谢。

两个Jsp页面:
addItem.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>添加</title></head>
<body>
<form method="post" action="/items/add.action">
    输入姓名<input name="username" type="text" id="txtname"><br>
    输入邮箱<input name="useremail" type="text" id="txtemail"><br>
    <input type="submit" value="录入" >
</form>
</body>
</html>

queryItems.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>查询</title></head>
<body>
<h1>用户列表</h1>
<form action="/items/query.action" method="get">
    <c:forEach var="user" items="${userList}">
        <c:out value="${user.user_name}"/>
        ----<c:out value="${user.user_email}"/>
        <br>
    </c:forEach>
</form>
</body>
</html>

我的Controller类

@Controller
@RequestMapping("/items")
public class ItemsController {
    @Autowired
    private ItemsService itemsService;
    
    @RequestMapping("/query")
    public ModelAndView queryItems() throws Exception{
        List<User> itemsList = itemsService.findAllUser();
        ModelAndView mv = new ModelAndView();
        mv.addObject("userList", itemsList);
        mv.setViewName("queryItems");
        return mv;

    }
    @RequestMapping("/add")
    public ModelAndView addItem(String username, String useremail) throws Exception{
        User user = new User();
        user.setUser_name(username);
        user.setUser_email(useremail);
        itemsService.insertUser(user);
        ModelAndView mv = new ModelAndView();
        mv.addObject(user);
        mv.setViewName("addItem");
        return mv;
    }
}
PHP中文网
PHP中文网

认证0级讲师

répondre à tous(3)
左手右手慢动作

Écrivez
dans le contrôleur. Après avoir traité la requête (une certaine méthode) de la page addItem, retournez et écrivez return "redirect:url"; comme ceci pour rediriger vers l'url que vous avez spécifiée. L'url est l'url de vos queryItems<.>

左手右手慢动作

Je viens de modifier le code et d'écrire deux méthodes Controller séparément pour get et post sur la page d'ajout. La méthode post renvoie une redirection, obtenant l'effet souhaité. Existe-t-il un autre moyen ?

伊谢尔伦

Votre addItem.jsp est-il sauté via l'ajout du contrôleur ?
Sinon, accédez directement à addItem.jsp.
Ensuite, lors de la soumission, ajoutez les mots avec succès. Accédez à queryItems.jsp et revenez à addItem.jsp si l'ajout échoue, la page addItem.jsp invitera l'utilisateur avec un message d'erreur.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal