public ActionForward execute(.....) throws Exception{
     ArrayList AL = new ArrayList();
     UnionBean UB = new UnionBean();
     GlobalBean GB = new GlobalBean();
     AL.add(UB);
     AL.add(GB);
     request.setAttribute("returnArrayListObjectCollect",AL);
     return mapping.findForward("showIT");
}我的Action是这样写的,现在我想在页面中显示UB/GB中的相关属性,应当怎么指定bean:write的属性?

解决方案 »

  1.   

    建议用HashMap
    如果你界面用标签的话
    迭代的时候所取的每个元素又不同类,那就不要用ArrayList
    如果非要用ArrayList那你就不要用标签库了直接用java代码解析吧
      

  2.   

    <logic:iterate id="bodies" name="returnArrayListObjectCollect">
    <bean:define id="body" name="bodies" type="packs.TopicActionBean"/>
    <bean:write name="body" property="getSubject"/>
    </logic:iterate>
    页面中我这样写,报的错:
    java.lang.ClassCastException
    org.apache.jsp.index_jsp._jspService(index_jsp.java:108)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
    org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)如果我不写bean:define,直接输出body,页面就把对象所处的内存址(?)给输出来了。
    即:
    <logic:iterate id="bodies" name="returnArrayListObjectCollect">
    <bean:write name="body"/>
    </logic:iterate>
    返回的数据类似:
    packs.UnionBean@5cf1d4 packs.GlobalBean@3ad413f
      

  3.   

    TO:zhangji__2000(无奈的工作者)
    用HashMap的具体思路是什么?调用用bean:size来?
      

  4.   

    因为你的list中,保存的对象的类型不一致,所以,在取的时候,必须对其类型进行判断,要不很容易出现ClassCastException,建议,把同一类对象存在一个list中,如果类型不同,则分别存在不同的list中,然后:针对不同的list,分别调用
    <logic:iterate ,进行输出!
      

  5.   

    zhangji__2000(无奈的工作者) 正解。
    不同类的对象最好就不要放在一个ArrayList里,直接存放为不同的bean就可以了。如果放了,那就只好用jsp代码取出来了,logic:iterate 一般是用来遍历一系列相同的类型的对象的。
      

  6.   

    但是结构存在依赖关系,如果半独存在不同的list中,依赖关系就失去作用了。
    另外刚才查了一下,用nested可以输出,但是具体的还是不会用
      

  7.   

    解决了,用nested读取出来了。