在菜品页面前台取dishes.id的时候说我的id值类型不对。但是下面有一段展示用户列表的,却没有报错,正常显示。我的菜品页面是粘的用户页面的。后台也都是粘的。为什么菜品页面就有问题
有问题的菜品页面:
<s:iterator value="#session.dishlist" var="dishes">
<tr>
<td bgcolor="#ffffff" align="center" >
<input type="checkbox" name="boxname" value="${dishes.id}"/>
</td>
<td bgcolor="#ffffff" align="center">
${dishes.id}
</td>
<td bgcolor="#ffffff" align="center">
${dishes.dishname}
</td>
<td bgcolor="#ffffff" align="center">
${dishes.price}
</td>
<td bgcolor="#ffffff" align="center">
<form action="dishes/dish_dishUpdata" method="post" >
<input type="hidden" name="dish.id" value="${dishes.id}" >
<input type="hidden" name="dish.dishname" value="${dishes.dishname}" >
<input type="hidden" name="dish.price" value="${dishes.price}" >
<input type="submit" value="修改" >
</form>
</td>
<td bgcolor="#ffffff" align="center">
<a href="dishes/dish_deleteDish?dish.id=${dishes.id}" onclick="return confirmit()" >删除</a>
</td>
</tr>
</s:iterator>
正常显示的用户页面
<s:iterator value="#session.userlist" var="users">
<tr>
<td bgcolor="#ffffff" align="center" >
<input type="checkbox" name="boxname" value="${users.id}"/>
</td>
<td bgcolor="#ffffff" align="center">
${users.id}
</td>
<td bgcolor="#ffffff" align="center">
${users.username}
</td>
<td bgcolor="#ffffff" align="center">
${users.password}
</td>
<td bgcolor="#ffffff" align="center">
<form action="users/user_userUpdata" method="post" >
<input type="hidden" name="user.id" value="${users.id}" >
<input type="hidden" name="user.username" value="${users.username}" >
<input type="hidden" name="user.password" value="${users.password}" >
<input type="submit" value="修改" >
</form>
</td>
<td bgcolor="#ffffff" align="center">
<a href="users/user_deleteUser?user.id=${users.id}" onclick="return confirmit()" >删除</a>
</td>
</tr>
</s:iterator>
报错信息
六月 14, 2018 4:47:29 下午 org.apache.catalina.core.ApplicationDispatcher invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.NumberFormatException: For input string: "id"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at javax.el.ListELResolver.coerce(ListELResolver.java:163)
at javax.el.ListELResolver.getValue(ListELResolver.java:51)
at org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104)
at org.apache.el.parser.AstValue.getValue(AstValue.java:183)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:967)
at org.apache.jsp.WEB_002dINF.dishes.dish_005fdishQuery_005fsuccess_jsp._jspx_meth_s_005fiterator_005f0(dish_005fdishQuery_005fsuccess_jsp.java:217)
at org.apache.jsp.WEB_002dINF.dishes.dish_005fdishQuery_005fsuccess_jsp._jspService(dish_005fdishQuery_005fsuccess_jsp.java:158)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
16 个解决方案
#1
贴下后台代码,还有实体类中dishes.id和数据库字段的类型是什么
#2
你的value="#session.dishlist"这个对象,返回的是list<dishlist>还是list<Object>额,原因应该你的这个对象返回的是Object,所以没办法用dishlist.id
#3
dish_005fdishQuery_005fsuccess_jsp.java的158,217行贴出来
#4
展示是int到jsl中变string,可以自动转换。。。。获取是从页面到后台,后台从request中取到的只能是String,无法复制给int类型的id,无法自动转换
#5
后台请用String idStr来接收,然后int id = Integer.parseInt(id);
#6
这是我的Action里的代码
这段是报错的[code=java// 菜品查询的方法
public String dishQuery() {
this.dishes = this.dishService.queryDish(window);
session.put("dishlist", dishes);
List<Dish> dishs=(List<Dish>)session.get("dishlist");
System.out.println(dishs.get(1).getId()+"action");
System.out.println(dishs.get(1).getDishName()+"action");
System.out.println(dishs.get(0).getId()+"action");
System.out.println(dishs.get(0).getDishName()+"action");
return SUCCESS;
}][/code]
这段是不报错的
// 用户查询的方法
public String queryUser() {
this.users = this.userService.queryUser(user);
session.put("userlist", users);
return SUCCESS;
}
#7
返回的是List<Dish>
#8
dish_005fdishQuery_005fsuccess_jsp.java的158,217行贴出来
JSP页面上有把字符串值为"id"的,变成Integer的地方。
是jsp,jsp,jsp。
JSP页面上有把字符串值为"id"的,变成Integer的地方。
是jsp,jsp,jsp。
#9
先把页面上${dishes.id}的代码注释掉,排除下是dishlist类型不对还是id有问题
#10
dish_005fdishQuery_005fsuccess_jsp.java的158,217是什么呀。。。。我jsp页面上也没有217行啊。。
#11
你的jsp会被编译成java的servlet代码,报错在dish_005fdishQuery_005fsuccess_jsp.java的158,217
拿到这个以下就明白了。
eclipse路径和tomcat路径参照下面
https://blog.csdn.net/Gavid0124/article/details/44935793
https://blog.csdn.net/chosen0ne/article/details/5343609
拿到这个以下就明白了。
eclipse路径和tomcat路径参照下面
https://blog.csdn.net/Gavid0124/article/details/44935793
https://blog.csdn.net/chosen0ne/article/details/5343609
#12
就是你传了个字符串“id”给了Integer,自己查查吧,我下班了。
#13
我把var=“dishes”改成var=“dishes1”就好使了。。这是什么道理啊?是堆栈里已经有dishes了吗?
#14
谢谢大哥
#15
是不是后台this.dishes也传到前台来了
#16
咋又是无满意结帖呢
#1
贴下后台代码,还有实体类中dishes.id和数据库字段的类型是什么
#2
你的value="#session.dishlist"这个对象,返回的是list<dishlist>还是list<Object>额,原因应该你的这个对象返回的是Object,所以没办法用dishlist.id
#3
dish_005fdishQuery_005fsuccess_jsp.java的158,217行贴出来
#4
展示是int到jsl中变string,可以自动转换。。。。获取是从页面到后台,后台从request中取到的只能是String,无法复制给int类型的id,无法自动转换
#5
后台请用String idStr来接收,然后int id = Integer.parseInt(id);
#6
这是我的Action里的代码
这段是报错的[code=java// 菜品查询的方法
public String dishQuery() {
this.dishes = this.dishService.queryDish(window);
session.put("dishlist", dishes);
List<Dish> dishs=(List<Dish>)session.get("dishlist");
System.out.println(dishs.get(1).getId()+"action");
System.out.println(dishs.get(1).getDishName()+"action");
System.out.println(dishs.get(0).getId()+"action");
System.out.println(dishs.get(0).getDishName()+"action");
return SUCCESS;
}][/code]
这段是不报错的
// 用户查询的方法
public String queryUser() {
this.users = this.userService.queryUser(user);
session.put("userlist", users);
return SUCCESS;
}
#7
返回的是List<Dish>
#8
dish_005fdishQuery_005fsuccess_jsp.java的158,217行贴出来
JSP页面上有把字符串值为"id"的,变成Integer的地方。
是jsp,jsp,jsp。
JSP页面上有把字符串值为"id"的,变成Integer的地方。
是jsp,jsp,jsp。
#9
先把页面上${dishes.id}的代码注释掉,排除下是dishlist类型不对还是id有问题
#10
dish_005fdishQuery_005fsuccess_jsp.java的158,217是什么呀。。。。我jsp页面上也没有217行啊。。
#11
你的jsp会被编译成java的servlet代码,报错在dish_005fdishQuery_005fsuccess_jsp.java的158,217
拿到这个以下就明白了。
eclipse路径和tomcat路径参照下面
https://blog.csdn.net/Gavid0124/article/details/44935793
https://blog.csdn.net/chosen0ne/article/details/5343609
拿到这个以下就明白了。
eclipse路径和tomcat路径参照下面
https://blog.csdn.net/Gavid0124/article/details/44935793
https://blog.csdn.net/chosen0ne/article/details/5343609
#12
就是你传了个字符串“id”给了Integer,自己查查吧,我下班了。
#13
我把var=“dishes”改成var=“dishes1”就好使了。。这是什么道理啊?是堆栈里已经有dishes了吗?
#14
谢谢大哥
#15
是不是后台this.dishes也传到前台来了
#16
咋又是无满意结帖呢