Spring mvc redirect传递参数时异常RedirectAttributes

Spring mvc redirect传递参数时异常
java.lang.IllegalStateException: Argument [RedirectAttributes] is of type Model or Map but is not assignable from the actual model. You may need to switch newer MVC infrastructure classes to use this argument.
	org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:322)
	org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171)
	org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:439)
	org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:427)
	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:915)
	org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:822)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:796)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

控制器端代码如下:

	@RequestMapping(value="openAccount",method=RequestMethod.POST)
	public String openAccount(RedirectAttributes reAttributes) {
		
		//generate the 16 card number
		String number = GenerateCardNumUtil.generateNum(16);
//		model.addAttribute("bankcarNum", number);
 		reAttributes.addAttribute("bankcarNum", number);
		return "redirect:/account/bindCard.jsp";
	}
页面获取参数使用EL表达式${bankcarNum}时出现了上述异常信息。

解决办法依次如下:

在spring配置文件里面加入:

xmlns:mvc="http://www.springframework.org/schema/mvc" 
xsi:schemaLocation中加入:

http://www.springframework.org/schema/mvc 
           http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
同时还需要加上

<mvc:annotation-driven/>
此时,错误将不再出现了,但是页面并未取得预想的值。按照网上的说法应该是版本的问题了,将spring的配置文件版本均改为3.1支持。

还是没有取到值,但是发现在没改和改版本之前URL地址上多了一个参数:

http://localhost:8080/springMVC/account/bindCard.jsp?bankcarNum=6225476871951904

附加:

这个问题一直放在草稿箱,也没有去处理,如今,算是搞清楚这里的意思了。

前面已经提到,url地址有变化(附带着参数),其实已经成功了。不过要在页面取到值,需要做一点点变化

要用到${param.bankcarNum}就可以取到值了,同时如果传递中文,出现乱码的话(首先确保我的springMVC

有设置过滤器,编码格式为UTF-8,这种其实只是设置了,前台往后台参数传递的编码过滤,而tomcat容器向页面传递参数却没有配置),那么这种情况需要修改tomcat安装目录下的server.xml中的<connector标签下(之前改过8080端口的那个地方)加上URIEncoding="UTF-8"就OK了!

      还有一个问题就是,当redirect传递参数时,自定义的对象在页面好像取不到值。后面有机会再来解决!


  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值