view-controller无法生效页面跳转失败,HTTP Status 400问题

问题背景

controller中已有匹配get请求的方法
@GetMapping("employee/{id}")
其中{id}使用了占位符,用来匹配诸如employee/1这样的url,顺便说一下此处使用的是RESTful风格的url
现在需要新增一个经过thymeleaf渲染的html界面。
这里采用在springmvc.xml文件中添加view-controller的形式

接着就出现view-controller无法生效页面跳转失败,HTTP Status 400问题

问题分析

简单看了一下报错

Failed to convert value of type 'java.lang.String' to required type 'java.lang.Integer'; nested exception is java.lang.NumberFormatException: For input string: "toAdd"

报错原因

<th><a th:href="@{/employee/toAdd}">添加</a></th>
发送这个请求后,不能正确匹配到<mvc:view-controller path="/employee/toAdd" view-name="employee_add"/>
而是匹配到@GetMapping("employee/{id}")导致类型转换异常。
而且在禁用view-controller后用@GetMapping("employee/toAdd")能够正常访问对应html文件
由此来看匹配的优先级应该是
@GetMapping("employee/toAdd") > @GetMapping("employee/{id}") > view-controller

#解决办法
将view-controller改为

<mvc:view-controller path="/employee/to/add" view-name="employee_add"/>

即可,本来命名规范就应该这样,小驼峰法写习惯了没改过来。

你可能感兴趣的:(GXM的SSM学习日志,java,servlet,springmvc)