java.util.HashMap cannot be cast to java.util.List
packagecn.itcast.web.tag;importjava.io.IOException;importjava.util.Arrays;importjava....
package cn.itcast.web.tag;
import java.io.IOException;import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
public class ForeachTag2 extends SimpleTagSupport {
private Object items;
private String var;
private Collection collection;
public void setItems(Object items) {
this.items = items;
if(items instanceof Collection){//list set
collection=(Collection) items;
}
if(items instanceof Map){
Map map=(Map) items;//set
collection=map.entrySet();
}
if(items instanceof Object[]){
Object obj[]=(Object[]) items;
collection=Arrays.asList(obj);
}
}
public void setVar(String var) {
this.var = var;
}
@Override
public void doTag() throws JspException, IOException {
Iterator it=this.collection.iterator();
while(it.hasNext()){
Object value=it.next();
this.getJspContext().setAttribute(var, value);
this.getJspBody().invoke(null);
}
}
}
<%
Map map=new HashMap();
map.put("aa","11");
map.put("bb","22");
map.put("cc","33");
map.put("dd","44");
request.setAttribute("map",map);
%>
<c:foreach2 var="entry" items="${map}">
${entry.key }=${entry.value }
</c:foreach2>
哪位大侠指点一下,怎么会出现种种异常呢! 展开
import java.io.IOException;import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
public class ForeachTag2 extends SimpleTagSupport {
private Object items;
private String var;
private Collection collection;
public void setItems(Object items) {
this.items = items;
if(items instanceof Collection){//list set
collection=(Collection) items;
}
if(items instanceof Map){
Map map=(Map) items;//set
collection=map.entrySet();
}
if(items instanceof Object[]){
Object obj[]=(Object[]) items;
collection=Arrays.asList(obj);
}
}
public void setVar(String var) {
this.var = var;
}
@Override
public void doTag() throws JspException, IOException {
Iterator it=this.collection.iterator();
while(it.hasNext()){
Object value=it.next();
this.getJspContext().setAttribute(var, value);
this.getJspBody().invoke(null);
}
}
}
<%
Map map=new HashMap();
map.put("aa","11");
map.put("bb","22");
map.put("cc","33");
map.put("dd","44");
request.setAttribute("map",map);
%>
<c:foreach2 var="entry" items="${map}">
${entry.key }=${entry.value }
</c:foreach2>
哪位大侠指点一下,怎么会出现种种异常呢! 展开
2个回答
展开全部
hashMap本来没有实现list接口,怎么会能够转换呢,要么用Arraylist,要么你就转换为Map,你要明白Collection这个接口下面的构造,是只有set和list的,Map在单列在外面,好好学吧!你这代码太乱了,没看懂。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这种报错是MAP转LIST强制转换的问题。
具体的,建议你DEBUG一下代码。看看哪块出的问题。
具体的,建议你DEBUG一下代码。看看哪块出的问题。
追问
应该是 这里出现了问题,这个是标签的java类里面的转换代码
if(items instanceof Map){
Map map=(Map) items;//set
collection=map.entrySet();
}
我是看视频一步一步来的,视频里面没有出现错误,我的怎么会出现这种转换异常·呢!
追答
标签这块你在实现处设置个断点看看。
视频中也许会有剪辑,还是自己动手调一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询