这段代码编译报错,但是可以运行,List<UserInfo>还获得到值(是有值的)
<%
IUserDao biz=new UserMesBiz();
String uname=(String)session.getAttribute("login"); //biz.findAllZ(uname);这个方法返回值为一个Map<String,UserInfo>
List<UserInfo> map=biz.findAllZ(uname);
request.setAttribute("UserInfos",map);
%>
如果我把它换成这样,编译不报错,但就发生异常:
<%
IUserDao biz=new UserMesBiz();
String uname=(String)session.getAttribute("login"); //biz.findAllZ(uname);这个方法返回值为一个Map<String,UserInfo>
Map<String,UserInfo> map=biz.findAllZ(uname);
request.setAttribute("UserInfos",map);
%>错误信息:严重: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 10 in the jsp file: /Message/ListMessage.jsp
Type mismatch: cannot convert from List<UserInfo> to Map<String,UserInfo>
7: <%
8: IUserDao biz=new UserMesBiz();
9: String uname=(String)session.getAttribute("login");
10: Map<String,UserInfo> map=biz.findAllZ(uname);
11: out.print(map);
12: request.setAttribute("UserInfos",map);
13: %>
奇怪!奇怪!
下面的是Map<String,UserInfo> map=biz.findAllZ(uname);这句话错了,看看你biz.findAllZ(uname)这个方法返回的map是否能转换成Map<String,UserInfo>,也就是说map里面是不是String,UserInfo这种结构。还有biz.findAllZ(uname)这个方法有没有抛出异常,jsp页面尽量不要调用类文件,在action里面或者servlet里面写好,页面都用标签。
List<UserInfo> map=biz.findAllZ(uname);你自己说的biz.findAllZ(uname)返回一个对象,而你确用List接受,编译能通过?
但是又说我的连接池异常
Context ctx=new InitialContext();
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/orcl");
conn=ds.getConnection();我其它注册,登录都已经做好了~测试好了都是用这个连接的!无有问题!所以奇怪,会不会是个Tomcat6有问题!