jsp 没接收到controller传来的model

调试:
controller 成功接收到参数。并且给model传入数据。界面也跳转了
jsp文件中使用 ${user.id} 获取数据
但是处理的依然是 ${user.id} 而不是传入来的数据。

原因: 默认创建的web模板,其配置文件 web.xml文件是使用 2.3版本

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >

导致后面的servlet、jsp、EL等采用的全是2.3版本,而在2.3版本中,jsp页面是不支持EL的,无法得到正确的解析。

解决方法: 将前面的那一段代码删除掉。然后加入下面代码

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         id="WebApp_ID" version="3.0">
### 回答1: model.addAttribute()是Spring MVC框架中的一个方法,用于向视图层传递数据。当传递的数据是一个List类型时,可以将List作为参数传递给该方法,然后在视图层中使用EL表达式来访问List中的数据。例如: 在Controller中: List<String> list = new ArrayList<>(); list.add("apple"); list.add("banana"); list.add("orange"); model.addAttribute("fruitList", list); 在JSP页面中: <c:forEach items="${fruitList}" var="fruit"> ${fruit} </c:forEach> 以上代码将会输出: apple banana orange 这样就可以将List类型的数据传递到视图层,并在视图层中进行展示。 ### 回答2: 在Spring中,我们可以使用Model来将数据传递给视图。Model是一个接口,它定义了添加属性的方法,其中最常用的方法是addAttribute()。addAttribute()方法可以传递单个属性或者多个属性。当我们需要传递多个属性时,我们可以将它们封装在一个List中,并使用addAttribute()方法将List传递给视图。以下是使用addAttribute()方法传递List的示例代码: ``` @GetMapping("/users") public String getUsers(Model model) { List<User> userList = userService.getAllUsers(); model.addAttribute("users", userList); return "users"; } ``` 在上面的代码中,我们使用userService来获取所有的用户,并将他们封装在一个List中。然后,我们使用addAttribute()方法,并指定一个名字"users"和一个值userList,将List传递给视图。最后,我们返回视图名称"users",Spring框架将自动找到名为"users"的视图,并将数据渲染到该视图中。 在视图中,我们可以通过Thymeleaf或其他模板引擎来访问我们传递的List。以下是一个使用Thymeleaf访问传递过来的List的示例代码: ``` <table> <thead> <tr> <th>ID</th> <th>Name</th> <th>Email</th> </tr> </thead> <tbody> <tr th:each="user : ${users}"> <td th:text="${user.id}"></td> <td th:text="${user.name}"></td> <td th:text="${user.email}"></td> </tr> </tbody> </table> ``` 在上面的代码中,我们使用th:each指令循环遍历传递过来的List,并将其中的每一个元素赋值给变量"user"。然后,我们在表格中显示用户的ID、名称和电子邮件。 ### 回答3: 在Spring MVC中,我们可以使用model.addAttribute()方法向模型中添加属性。这个方法接收一个字符串键和一个值作为参数,让我们可以在视图中使用这个属性。 除了单个值,我们还可以使用model.addAttribute()方法添加列表到模型中。这可以让我们将多个值一次性提交给视图,方便渲染。 以下是一个使用model.addAttribute()方法添加列表到模型中的示例: ``` @RequestMapping("/list") public String getList(Model model) { List<String> items = new ArrayList<>(); items.add("item1"); items.add("item2"); items.add("item3"); model.addAttribute("items", items); return "listView"; } ``` 在上面的代码中,我们可以看到我们创建了一个包含三个字符串元素的列表,并将其添加到了模型中的“items”键中。在视图中,我们可以使用以下代码来渲染这个列表: ``` <ul> <c:forEach items="${items}" var="item"> <li>${item}</li> </c:forEach> </ul> ``` 在这个代码中,我们使用JSTL的forEach标签来循环遍历我们在模型中添加的“items”列表,并将每个元素呈现为一个HTML列表项。 因此,使用model.addAttribute()方法来添加列表到模型中可以帮助我们更方便地呈现多个数据元素的列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值