List<Student>是这样的,有句话是可有可无的,就是Student stu = (Student)object;pageContext.setAttribute(var, stu);
只要写这for (Object object : list) {
pageContext.setAttribute(var, object);
就可以产生一样的效果。
那么请问为什么在这里就不需要向下转型再添加呢?
<%
List list = new ArrayList();
list.add(new Student("rose",18));
pageContext.setAttribute("list",list); %>
<it:forEach items="${list}" var="student">
姓名:${student.stuName} - 年龄:${student.age }<br/>
</it:forEach>这里student.stuName的明明是Student类里面写的方法,Object里面没对应的方法,不需要强转再添加么?
javaweb中自定义标签写的模仿foreach标签里面的一个问题
答案:2 悬赏:20 手机版
解决时间 2021-02-12 12:05
- 提问者网友:黑米和小志
- 2021-02-12 08:57
最佳答案
- 五星知识达人网友:慢性怪人
- 2021-02-12 09:09
说说我个人的理解吧:
<%
List list = new ArrayList();
list.add(new Student("rose",18));
pageContext.setAttribute("list",list); %>
这段demo是作为java嵌入在jsp中,他不属于js的一部分;在执行时,是需要借助JAVA编译器,并且,在JSP文件头还要做JAVA的引入;
这段代码:
<it:forEach items="${list}" var="student">
姓名:${student.stuName} - 年龄:${student.age }<br/>
中间使用的是C标签,student.stuName也符合C语言的访问方式;
接下来就是要说到映射,其实list在映射入口钱就是一个student的list类型,那么映射后,类型是不会变的,当然,遵守JAVA自动向上转型的规则,你可以按照object的方式来访问。但他本省就属于student类,无需再做转换;
<%
List list = new ArrayList();
list.add(new Student("rose",18));
pageContext.setAttribute("list",list); %>
这段demo是作为java嵌入在jsp中,他不属于js的一部分;在执行时,是需要借助JAVA编译器,并且,在JSP文件头还要做JAVA的引入;
这段代码:
<it:forEach items="${list}" var="student">
姓名:${student.stuName} - 年龄:${student.age }<br/>
中间使用的是C标签,student.stuName也符合C语言的访问方式;
接下来就是要说到映射,其实list在映射入口钱就是一个student的list类型,那么映射后,类型是不会变的,当然,遵守JAVA自动向上转型的规则,你可以按照object的方式来访问。但他本省就属于student类,无需再做转换;
全部回答
- 1楼网友:西风乍起
- 2021-02-12 10:04
人家用的是反射机制实现的。不需要强制转换。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯