Spring mvc Spring表单绑定到列表<;整数>;升级到Java 8时不工作
我们正在将我们的SpringMVC系统升级到从Java6编译而来的Java8。在运行时,我们将一个表单对象加载到列表中,当该列表被迭代时抛出java.lang.ClassCastException:java.lang.String 无法转换为java.lang.Integer 同样的代码在我们用Java6编译的生产环境中运行良好 下面是我们代码库的摘录 JSPSpring mvc Spring表单绑定到列表<;整数>;升级到Java 8时不工作,spring-mvc,java-8,Spring Mvc,Java 8,我们正在将我们的SpringMVC系统升级到从Java6编译而来的Java8。在运行时,我们将一个表单对象加载到列表中,当该列表被迭代时抛出java.lang.ClassCastException:java.lang.String 无法转换为java.lang.Integer 同样的代码在我们用Java6编译的生产环境中运行良好 下面是我们代码库的摘录 JSP 菜单: - --- 控制器 我没有添加完整的方法。但这正是它所做的 protected ModelAndView onSubmit
菜单:
-
---
控制器
我没有添加完整的方法。但这正是它所做的
protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, ManageUserCommand command, BindException errors) throws Exception
{
List<Integer> selectedMenuIdList = command.getSelectedMenuIdList();
for (Integer menu : selectedMenuIdList){//exception thrown here
userMenu.setMenuId(menuId);
userMenuDao.save(userMenu);
}
}
submit上受保护的ModelAndView(HttpServletRequest请求、HttpServletResponse响应、ManageUserCommand命令、BindException错误)引发异常
{
List selectedMenuIdList=command.getSelectedMenuIdList();
对于(整型菜单:selectedMenuIdList){//此处引发异常
userMenu.setMenuId(menuId);
userMenuDao.save(用户菜单);
}
}
当我按照下面的方式重新编写代码时,它就工作了
Iterator<Integer> i = selectedMenuIdList.iterator();
while(i.hasNext()){
String temp = String.valueOf(i.next());
Integer menuId = Integer.parseInt(temp);
userMenu.setMenuId(menuId);
userMenuDao.save(userMenu);
}
Iterator i=selectedMenuIdList.Iterator();
while(i.hasNext()){
String temp=String.valueOf(i.next());
整数menuId=Integer.parseInt(temp);
userMenu.setMenuId(menuId);
userMenuDao.save(用户菜单);
}
请澄清使用java 8会出现什么问题,因为我们无法像上面那样重新编写所有代码以使其与java 8一起工作。显示整个控制器方法(尤其是参数)。我非常怀疑它与java版本有关。这可能与升级您的SpringMVC版本有关。
Iterator<Integer> i = selectedMenuIdList.iterator();
while(i.hasNext()){
String temp = String.valueOf(i.next());
Integer menuId = Integer.parseInt(temp);
userMenu.setMenuId(menuId);
userMenuDao.save(userMenu);
}