spring mvc EL ModelAndView的 Model 值 在jsp中不显示

问题:
spring mvc开发过程中, 经常会给model addAttribute, 然后通过EL在jsp中显示,比如 ${msg}, 
但是有时候会出现 jsp最后显示的还是${msg},而不是msg赋值过的

Spring Controller


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
 
public class ABCController extends AbstractController{
 
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
 
ModelAndView model = new ModelAndView("HelloWorldPage");
model.addObject("msg", "hello world");
 
return model;
}
 
}
JSP page


<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
             ${msg}
</body>
</html>
解决方法:
原因在于老的JSP 1.2 声明.


1. JSP 1.2
如果你用的jsp1.2版本的DTD
web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >
 
<web-app>
//...
</web-app>
EL是默认关闭的。。。必须手动打开。<%@ page isELIgnored="false" %>


<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<%@ page isELIgnored="false" %>
</head>
<body>
           ${msg}
</body>
</html>


2. JSP 2.0
JSP2.0默认是打开支持EL的,所以声明jsp2.0就可以直接用了。
web.xml

<web-app id="WebApp_ID" version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
//...
</web-app>
  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
Spring MVCModelAndView是一个组合对象,它将Model(数据)和View(视图)合并在一起。ModelAndView包含一个Model实例(一个Map对象),其包含需要在视图呈现的数据,以及一个视图名称或视图对象。Spring MVCModelAndView返回给DispatcherServlet,然后DispatcherServlet使用视图解析器(ViewResolver)将视图名称解析为实际的视图对象,最终将数据和视图传递给客户端。 使用Spring MVC构建Restful风格的API,首先需要定义API的URI和HTTP方法。在Spring MVC,可以使用@RequestMapping注解来定义API的URI和HTTP方法。例如: ```java @RestController @RequestMapping("/api") public class MyRestController { @GetMapping("/user/{id}") public User getUserById(@PathVariable("id") Long id) { User user = userService.getUserById(id); return user; } @PostMapping("/user") public User createUser(@RequestBody User user) { userService.createUser(user); return user; } @PutMapping("/user/{id}") public User updateUser(@PathVariable("id") Long id, @RequestBody User user) { userService.updateUser(id, user); return user; } @DeleteMapping("/user/{id}") public void deleteUser(@PathVariable("id") Long id) { userService.deleteUser(id); } } ``` 上面的代码定义了一个名为MyRestController的RestController,它包含四个API方法:getUserById、createUser、updateUser和deleteUser。这些方法分别使用@GetMapping、@PostMapping、@PutMapping和@DeleteMapping注解来指定API的HTTP方法。其,@PathVariable注解用于获取URI的参数,@RequestBody注解用于获取请求体的数据。 在API方法,可以直接返回数据对象,Spring MVC会自动将其转换为JSON格式的响应。如果需要自定义响应格式或响应状态码,可以使用ResponseEntity类。例如: ```java @GetMapping("/user/{id}") public ResponseEntity<User> getUserById(@PathVariable("id") Long id) { User user = userService.getUserById(id); if (user != null) { return ResponseEntity.ok(user); } else { return ResponseEntity.notFound().build(); } } ``` 上面的代码定义了一个返回类型为ResponseEntity<User>的API方法,它可以自定义响应状态码和响应体。如果找到了用户,则返回200状态码和用户对象;如果找不到用户,则返回404状态码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值