我把主要的几行代码写上来<%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>上面的c.tld标签已经添加到相应路径里,stantard.jar和jstl.jar包也放在了项目的lib目录下。User[] user=new User[5];
Collection con=new ArrayList();
for(int i=0;i<=4;i++){
user[i]=new User();
user[i].setName("name"+i);
user[i].setPassword("password"+i);
con.add(user[i]);
}
session.setAttribute("con", con);
<c:forEach items="${con}" var="user1">
<br><tr><td>姓名: <c:out value="${user1.name}"/></td></tr>
<br><tr><td>密码: <c:out value="${user1.password}"/></td></tr>
</c:forEach>我用logic:iterate 标签测试,就可以正常的输出5个数据。
但是用jstl的标签就会出现下面的显示效果:姓名: ${user1.name} 
密码: ${user1.password} 
感觉似乎没被解析。请问这是怎么回事啊? 谢了先

解决方案 »

  1.   

    直接
    <br> <tr> <td>姓名:  ${user1.name}</td> </tr> 
    <br> <tr> <td>密码:  ${user1.password}</td> </tr> 
    就可以了把。
     EL 表达试本身就有输出的效果。 <c:out> 本身也是输出的效果。 两个输出 后面一个 就被当成字符传处理了。 
      

  2.   

    JSTL
      

  3.   

    c:out就别加el了,EL本身就是表达式,自己会输出的
      

  4.   

    jstl 版本低 高版本能实现
      

  5.   

    其实是你的EL表达式 没被识别
    要在<%@ page isELIgnored="false">
    这样就可以
      

  6.   

    你那里有user1这个对象?
    你应该是user[1].name吧?
    是你写错了吧?还有,楼上的菜鸟们,用c:out的好处是,c:out默认不会执行脚本和写解析任何标记
    除非你把 escape属性设置成true。这样可以一定程度防止脚本注入攻击,菜鸟们,清楚了没有?》
      

  7.   


    看漏了foreach标记,sorry,我道歉~
    不用${}就好了