SpringMVC中JSP取不到ModelAndView的数据原因

在项目中发现用JSP取不到ModelAndView的数据,但能跳转到对应的页面,显示$("message"),而非对应的值

找了半天原因,发现在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>

当改成这样就可以了:

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

 

没想到与web.xml的配置有关系。原web.xml是我建立项目用maven生成的。

 可以看下:http://forum.springsource.org/showthread.php?117394-Unable-to-access-modelAndView-attributes-in-JSP-without-JSTL 

 

还有一个原因:

一个可能是你实现了HandlerInterceptor并实现了:
void postHandle(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.Object o, org.springframework.web.servlet.ModelAndView modelAndView) throws java.lang.Exception;

在此处修改了modelAndView

这个是网上找的(http://www.blogjava.net/javagrass/archive/2012/12/17/393107.html) 

解决方法:

按照标准用法的话应该是没问题
内部其实把model 通过request.setAttribute(modelName, modelValue); 放入的
    protected void exposeModelAsRequestAttributes(Map<String, Object> model, HttpServletRequest request) throws Exception {
        for (Map.Entry<String, Object> entry : model.entrySet()) {
            String modelName = entry.getKey();
            Object modelValue = entry.getValue();
            if (modelValue != null) {
                request.setAttribute(modelName, modelValue);
                if (logger.isDebugEnabled()) {
                    logger.debug("Added model object '" + modelName + "' of type [" + modelValue.getClass().getName() +
                            "] to request in view with name '" + getBeanName() + "'");
                }
            }
            else {
                request.removeAttribute(modelName);
                if (logger.isDebugEnabled()) {
                    logger.debug("Removed model object '" + modelName +
                            "' from request in view with name '" + getBeanName() + "'");
                }
            }
        }
    }

 

一个可能是你实现了HandlerInterceptor并实现了:
void postHandle(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.Object o, org.springframework.web.servlet.ModelAndView modelAndView) throws java.lang.Exception;

在此处修改了modelAndView 

 

当然还有其他配置不能忘了:

 <display-name>dk</display-name>
      <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>
            org.springframework.web.filter.CharacterEncodingFilter
        </filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    
  <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:config/SpringMVC*.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>        
 
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>
    

 

 

SpringMVC_servlet.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="     
           http://www.springframework.org/schema/beans     
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd     
           http://www.springframework.org/schema/context     
           http://www.springframework.org/schema/context/spring-context-3.0.xsd    
           http://www.springframework.org/schema/mvc     
           http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

	<!-- ViewResolver -->
	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> 
		<property name="prefix" value="/WEB-INF/page/" />
		<property name="suffix" value=".jsp" />
	</bean>
	<context:component-scan base-package="com.dk.*.controller" />
	<mvc:annotation-driven />
</beans>

 

 

当然jsp中也少不了这句:

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

 

pom.xml

<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>3.2.8.RELEASE</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>3.2.8.RELEASE</version>
		</dependency>
              <!--jstl-->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
	</dependencies>

 

jsp中request中的使用获取参数 想知道request怎么用,所以做了一个小实验,希望对大家有一点点帮助 立即下载

相关推荐

ABAP - Function ALV 11 - 单元格下拉框

【代码】ABAP - Function ALV 11 - 单元格下拉框。

HeathlX的博客 1812

boot拦截器 问题

1: 自定义拦截器中的postHandle方法中的 ModelAndView一直报null指针问题 原因 在控制成用RestController,这个意思默认添加了ResponseBody,就没有ModelAndView,可以把RestController改成Controller,就可以拿的到ModelAndView这个对象 2:自定义拦截器中,自动注入为null 原因 需要在拦截器的配置中,将自定义的拦截器定义为一个bean @Configuration public class MyWebAppConf

weixin_42903592的博客 443

八戒留档之宝塔部署edusoho

1.安装好基础的服务 2.上传你下载的代码到www/wwwroot文件3、配置网站 4.编辑创建的网站修改nginx文件 NGINX配置如下 server { listen 80; server_name 你的域名; root /www/wwwroot/项目文件名称/web/; location / { try_files $uri /app_dev.php$is_args$args; } ...

wolf23151269的博客 2540

JSP页面无法读取ModelAndView值

一次搭建springmvc项目时遇到的奇葩问题,控制层没有抱错,包扫码没问题,页面成功跳转,但是jsp就是取不到model中的值,最后发现是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&g...

fishineye的专栏 907

WS2812呼吸灯效果实战:用STM32的PWM+DMA实现流畅渐变(附完整代码)

本文详细介绍了如何使用STM32的PWM+DMA技术实现WS2812呼吸灯效果,提供完整的代码示例和调试技巧。通过PWM波形编码和DMA传输机制,解决了传统IO模拟控制方式的高CPU占用问题,实现了流畅的LED渐变效果,适用于各种嵌入式开发场景。

weixin_30566063的博客 452

DINOv3实战指南:如何利用零样本视觉模型革新工业质检

本文详细介绍了如何利用DINOv3零样本视觉模型革新工业质检流程。通过无需标注数据的自监督学习技术,DINOv3能快速部署高精度检测系统,显著降低成本和提升效率。文章涵盖模型选型、数据准备、实时检测优化及典型行业解决方案,为工业质检提供革命性AI实践指南。

ansible6ops的博客 122

SpringMVC中JSP取不到ModelAndView的数据的原因

最近在学习SpringMVC的时候,用到ModelAndView对象的时候,在Controller中很轻易的就能封装大量的数据,然后也很容易的在JSP页面用JSTL标签取到值. 然而今天仍是像往常一样的码代码,但是却出现了在JSP页面死活都取不到ModelAndView对象存入的值. 于是通过谷歌和度娘查找时,发现两种可能性说的最多: 1 控制器实现了HandlerInterceptor,...

游戏、网站、app逆向破解 786

大学生智能车竞赛初次尝试经验分享--1(硬件绘制电路,pcb部分)

本人机械电子专业大二暑假参加全国大学生智能车竞赛,之前参加过一些其他类型的比赛有一点基础,由于之前疫情影响所以做智能车比赛断代了,没有学长带也没有思路,从一开始的一头雾水逐渐摸索出我感觉比较实用的经验。 一.首先是硬件的准备工作: 1.硬件部分与要自己设计需要的电路制成pcb。推荐使用Altium Designer20,AD比较常用所以有多实用的教学视频,另外需要自己了解布线规则,包括信号线,电源线常用的宽度 一些电源电路,驱动电路建议用multisim仿真,没有问题再进行制版 单片机有关的需要仿真

weixin_52679034的博客 9831
上一篇: hibernate 自增长配置
下一篇: saveAndFlush and save
iteye_8567
博客等级 码龄8年 3粉丝 196原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值