spring mvc jsp 和 后台controller 传值交互

来源:互联网 发布:淘宝默认邮箱 编辑:程序博客网 时间:2024/06/05 12:40
用spring mvc 接收jsp页面form表单传的值,接收不到,最后找到原因是因为写法问题
后台代码:

@Controller

@RequestMapping(value = "/my/user")

public class UserController {

private Log log LogFactory.getLog(UserController.class);


@Autowired

private UserService userService;

 

@RequestMapping(value = "/findList")

//user 用于接收jsp 页面 form表单的属性值,model用于向jsp传返回值

public ModelAndView findList(User user,Model model){

ModelAndView mv new ModelAndView("/page/user/list");

try {

System.out.println(user.getName());

List list userService.findAll();

model.addAttribute("userName"user.getName());

mv.getModel().put("list"list);

mv.getModel().put("userName""小馒头");

catch (Exception e) {

log.error(e);

}

return mv;

}

}


jsp代码:

向后台传值的form表单:

<</span>html>

<</span>meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<</span>body>

<</span>h2>Hello World!</</span>h2>

<</span>form action="/MyProject/my/user/findList" method="post">

<</span>input type="text" name="name"/>

<</span>input type="submit" value="提交"/>

</</span>form>

</</span>body>

 

</</span>html>


需要注意的是,跟Struts2不一样的是,向spring mvc后台传值jsp form表单直接写对象的属性名,不用向Struts2那样需要 对象.属性名 (user.name)这样,


后台向前台传值有很多种方式,这里只列出了两种 

1.使用 ModelAndView 

ModelAndView mv new ModelAndView("/page/user/list");

mv.getModel().put("list"list);

mv.getModel().put("userName""小馒头");

2.使用 Model

model.addAttribute("userName"user.getName());

具体写法参数上面的controller代码。


接收返回值的jsp代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ page isELIgnored="false" %> <!-- 是否启用el表达式 -- >

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>用户列表页面</title>

</head>

<body>

这是用户列表页面${userName}

<table>

<c:forEach items="${list}" var="user">

<tr>

<td>${user.name }</td>

<td>${user.sex }</td>

<td>${user.age }</td>

</tr>

</c:forEach>

</table>

</body> 

</html>


这里要注意的是,一开始没有加这句话 <%@ page isELIgnored="false" %> el表达式不起作用,直接输出了${userName} ${user.name} ${user.sex} ${user.age},加上 这句话 el表达式才起作用

默认EL忽略true的,所以不加EL是没法的.

阅读全文
1 0