logic:iterate id="info" name="pinfo" > 里面的pinfo是从action传过来的, 你直接进页面, 当然没有值啦 

解决方案 »

  1.   

    你把它放到session里面试下!?
    request改成session
      

  2.   

    在 PinfoForm 这个form里面加上
    List list = new ArrayList();
    添加上getter setter 方法
    然后再Action里面使用form.setList(list);,这样应该就可以了
      

  3.   

    这个问题我也遇到过,我现在加了一个群,这个群人气较好,也的确有高手,不但可以交流问题,而且还可以接项目赚钱,QQ群号是:陆$肆$柒$玖$捌&柒&伍&伍,不要说我做广告,看看便知,如需要的话加入试试,如果你发现好的交流群也别忘了告诉我啊!呵呵!
      

  4.   

      <logic:iterate id="info" name="pinfo" >
    当然取不到值了 改成这样试试
      <logic:iterate id="info" name="pinfo" scope="request">
    ${info.pid}
    ${info.pname}
    </logic:iterate>
      

  5.   

    没看清...LZ说
    我在http://localhost/pinfo/pinfo.do里能正确显示我想要的数据。但是一旦输入http://.../index.jsp就出现问题了。提示是:
    直接进页面.没有经过action pinfo没有设进去.所以拿不到值.
    但是经过.do后.是有值的.
      

  6.   

    9楼的意思是一定要设置个什么东西来触发这个action,我个人觉得是我对struts的流程机制还没完全弄清楚,好象我没给pinfoForm里的pid,pname赋值,而是直接在通过list得到值,我目前只是想测试一下struts部分的功能,所以没完全按照那个流程去做,我觉得问题在jsp页面是需要提供这个list给logic的,但是我不知道怎样做。改reuqest为session?又或者是给pinfoForm里也设置个list,然后赋值?
      

  7.   

    刚才8楼的方法行不通,4楼的方法我试了一下,在Action里是不是这样的?
             Pinfo pf = new Pinfo();//这是用get,set设计的一个javabean
    Pdata pd = new Pdata();//这是包含连接和一个getlist();方法,给Pinfo赋值的
    List list = pd.getList();
                    list.add(pf);
                    System.out.println(pd.getList().size());
    HttpSession session = request.getSession();//是这样吗?
                session.setAttribute("pinfo",list);
    return (mapping.findForward("success"));//success是指向index.jsp的。
    是这样吗?index.jsp页面还是和我之前发布的一样,不用改?
      

  8.   

    我主要是想知道怎样不经过actionform直接给jsp页面赋值,通过在页面<%.....%>这样的方式,这样logic:iterate才能对list进行遍历吧?
      

  9.   

    按照楼主的方法可以取道吧
    不过
        Pinfo pf = new Pinfo(); 
    Pdata pd = new Pdata(); 
    List list = pd.getList(); 
    list.add(pf); 
    你pf是new出来的对象 没有对他的属性赋值
    当然在页面上取属性是的是取不到了
      

  10.   

    我是一个菜鸟,也来凑凑热闹,虽然不是很明白,但是我想说的是,你用那个:
    1.
    <logic:iterate id="info" name="pinfo" > 
      <tr> 
      <td> 
          <bean:write name="info" property="pid" /> 
      </td> 
      <td> 
            <bean:write name="info" property="pname" /> 
      </td> 
      </tr> 
     </logic:iterate>
    你这样也无非就是想要得到值,为什么不用jstl里面的
    <c:forEach items="pinfo" var="p_info" >
    ${p_info.pid}
    ${p_info.pname}
    </c:forEach>吶(我经常用,我觉得挺好的)以上纯属个人偏见,既然你在ACTION里面已经request.setAttribute("pinfo",list); 了,那么通过这样的方法取值是一个不错的想法。2.
    还有一种就是<bean:write>标签里面好像还有一个 format 的属性,你给设置为一下看看。
      

  11.   

    你前面是 
     Pinfo pf = new Pinfo(); 
    Pdata pd = new Pdata(); 
    List list = pd.getList(); 
    list.add(pf); pf 是new出来的。里面没值的..你还要有个过程拿到数据库的值,然后塞到 pf里面
    然后再list.add(pf)
    Struts的所有动作是在action里面进行的,所以你要经过action才可以进行操作
    如果你不想经过action。那就在JSP里面写代码咯!
      

  12.   

    楼上的说对了,我明白了如果直接进入jsp页面是触发不到action的,需要在页面加代码。谢谢大家的指教。分数设低了,新手是这样的,平分了吧,呵呵。