springMVC Requestmapping失效界面提示404-参数绑定失败

问题为某一个@Controller下配置了四个@RequestMapping其中有两个可以访问而另外两个访问之后为404错误.

查看了spring_mvc-servlet文件,四个方法都有注册。而且此处如果没有注册应该会返回到首页登录,也不会发生404的错误。

@RequestMapping("/account/invests") 使用的配置为很普通的配置方式

如果出现以上问题还可以定位问题到参数上,RequestMapping绑定的url还和参数有关。这里排查后的问题为,参数绑定

失败,而且是int类型的参数

1. 基本数据类型(以int为例,其他类似):

Controller代码:

@RequestMapping("saysth.do")



public void test(int count) {



}

表单代码:

<form action="saysth.do" method="post">
<input name="count" value="10" type="text"/>
......
</form>

表单中input的name值和Controller的参数变量名保持一致,就能完成数据绑定,如果不一致可以使用@RequestParam注解。需要注意的是,如果Controller方法参数中定义的是基本数据类型,但是从页面提交过来的数据为null或者”"的话,会出现数据转换的异常。也就是必须保证表单传递过来的数据不能为null或”",所以,在开发过程中,对可能为空的数据,最好将参数数据类型定义成包装类型,具体参见下面的例子。

包装类型(以Integer为例,其他类似):

Controller代码:

@RequestMapping("saysth.do")
public void test(Integer count) {
}

表单代码:

<form action="saysth.do" method="post">
<input name="count" value="10" type="text"/>
......
</form>

和基本数据类型基本一样,不同之处在于,表单传递过来的数据可以为null或”",以上面代码为例,如果表单中num为”"或者表单中无num这个input,那么,Controller方法参数中的num值则为null。

而当前项目出现的问题就是将参数中的分页page和rows定义成了int类型,而且调用url没有传参。更换为Integer即可

猜你喜欢

转载自www.cnblogs.com/reload-sun/p/8985841.html
今日推荐