1.首先我在Jsp页面中 定义一个User1 类,然后用EL来遍历这个类的集合userList
<% class User1{ private String name; private int age; public User1(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } List<User1> userList = new ArrayList<>(); userList.add(new User1("zhanghao",22)); userList.add(new User1("zhangfan",23)); pageContext.setAttribute("userList",userList); %> <c:forEach var="user" items="${userList}"> ${user.name} --- ${user.age} </c:forEach>
好了,代码时没问题,但运行时,就会遇到异常。
异常截图如下:
可以看出,再JSP页面中定义类,属性(name,age)变为不可读的了。
看下在JSP翻译servlet过程中,JSP中定义的类User1,生成的字节码文件。
我的JSP叫做,04JSTL.jsp,那么生成了_04JSTL_jsp.java和_04JSTL_jsp.class这个没问题(jsp文件名以数字开头,自动加下划线。)
然后又生成了一个_04JSTL_jsp$User1.class,这是我们在JSP中定义的类。
原因:未知,欢迎探讨。
解决方案:如果想使用JSTL遍历类集合,不要在JSP中定义类。
原文:https://www.cnblogs.com/zh1996/p/10353175.html