=======================================================================
存储数据集的list:    public ActionForward getAllSideTypeAction(
            ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response) throws Exception {      
        
        
             AlbumModel albummodel =new AlbumModel();
AlbumDAO albumdao=new AlbumDAO();

java.util.ArrayList list=new java.util.ArrayList();
list=albumdao.getAllalbum1(albummodel);
request.setAttribute("list", list);

if(list==null)
System.out.println(list.size());

request.setAttribute("list", list);
return mapping.findForward("addtype");   //对应到下面的jsp页面上了。
        }
========================================================================
下面是图片循环成四行四列的代码:
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="photo_small">
<logic:iterate name="list" id="a" indexId="i" offset="1">
<bean:define id="temp" value="${(i-1)%4}"></bean:define>
<bean:define id="temp1" value="${i%4}"></bean:define>
<logic:equal name="temp" value="0">
<tr>
</logic:equal>
<td width="25%"><a href="showTypePhoto.do?ialbumId=<bean:write name="a" property="palbum_id"/>">
<!-- 如果没有相片就显示一张默认的图片--> 
<logic:empty name="a" property="cname">
<img src="images/photo01.gif" alt="photos" border="0" />
</logic:empty> 
<!--显示此分类最新上传的相片-->
 <logic:notEmpty name="a" property="cname"><img src="<bean:write name="a" property="cname"/>"alt="photos" border="0" />
</logic:notEmpty>
</a>
<div><strong> 
<bean:write name="a" property="cname" />
<!-- 显示相册名字-->
</strong> <br>
<a href="#"> <logic:equal name="a" property="cname"value="2">
保密
</logic:equal> 
</a> 
<a href="editPhoto.do?palbum_id=<bean:write name="a" property="palbum_id"/>">
修改 
</a>
 <html:link page="/deleteHouseAlbum.do" paramId="palbum_id" paramName="a" paramProperty="palbum_id"
onclick="return confirm('  您确定删除整个像册吗?\n注意:此操作将导致像册下所有相片全部删除!');">
删除
</html:link>
</div>
</td>
<logic:notEqual name="i" value="0">
<logic:equal name="temp1" value="0">
</tr>
</logic:equal>
</logic:notEqual>
</logic:iterate>
<logic:notEqual name="temp1" value="0">
</tr>
</logic:notEqual>
<tr>
<td colspan="4">
<div><logic:notEmpty name="list" scope="request"><logic:iterate name="list" id="a" scope="request" length="1"><logic:notEqual name="a" value="1">
<logic:equal name="curPage" value="1">首页 上一页 <html:link page="/showAllPhotoside.do?curPage=${curPage+1}">下一页</html:link>
<html:link page="/showAllPhotoside.do?curPage=${a}">末页</html:link> 共 <bean:write name="a" /> 页/第 <bean:write name="curPage" /> 页
</logic:equal><logic:equal name="curPage" value="${a}">
<html:link page="/showAllPhotoside.do">首页</html:link>
<html:link page="/showAllPhotoside.do?curPage=${curPage-1}">上一页</html:link> 
下一页 末页 共 <bean:write name="a" /> 页/第 <bean:write name="curPage" /> 页
</logic:equal><logic:notEqual name="curPage" value="1">
<logic:notEqual name="curPage" value="${a}">
<html:link page="/showAllPhotoside.do">首页</html:link>
<html:link
page="/showAllPhotoside.do?curPage=${curPage-1}">上一页</html:link>
<html:link
page="/showAllPhotoside.do?curPage=${curPage+1}">下一页</html:link>
<html:link page="/showAllPhotoside.do?curPage=${a}">末页</html:link> 
共 <bean:write name="a" /> 页/第 <bean:write
name="curPage" /> 页
</logic:notEqual>
</logic:notEqual></logic:notEqual>
<logic:equal name="a" value="1">
首页 上一页 下一页 末页 共 <bean:write name="a" /> 页/第 <bean:write
name="curPage" /> 页
</logic:equal>
</logic:iterate></logic:notEmpty></div>
</td>
</tr>
</table></td>
</tr>
</table>
===========================================================
error:(184125 ms) [http-8080-Processor23] ERROR: org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/photo].[jsp]#invoke : Servlet.service() for servlet jsp threw exception
javax.servlet.jsp.JspException: Cannot find bean list in any scope
at org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:992)
at org.apache.struts.taglib.logic.IterateTag.doStartTag(IterateTag.java:234)
at org.apache.jsp.pt_005fclass_jsp._jspService(org.apache.jsp.pt_005fclass_jsp:237)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)提示找不到list,郁闷死了,求牛人帮忙看一下。大家有没有这种类似的代码,贴上来看看啊。

解决方案 »

  1.   

    有两种方法:
    1、在Action中,对数据进行二次封装,将每条记录都以一个键值对的形式放入一个大Map对象中(map.put("1-1",(Ojbect)list.get(i);...map.put("1-4",(Object)list.get(i));...map.put("2-1",(Ojbect)list.get(i);...),再将Map对象存入request中。注意之所以这样,是在页面取值时,要在每个特定的位置如(td或div)中取值(Object)map.get("1-1")等,这样你可以决定每个图片的位置。
    2、使用jsp脚本,因为struts标签只能取出记录,但不利于排版和美工设计。
    <%
        int length = 16; // 4*4 四行四列
         int pt = 0;
        for(int i = 0; i< length; i++){
            %>
              <tr>
            <%
            for(int p = 0; p < 4; p++){
                pt = 4*i + p;
                if(pt < length){
                    Object obj = (Object)list.get(pt);
                %>
                    <td>...</td>
                    <td>...</td>
                    ...
                <%
                }
            }
            %>
                </tr>
            <%
        }
    %>
    3、是利用<logic:iterate>标签的属性indexId进行判断,他是每条记录的序号,细节不说了。
      

  2.   

    <logic:iterate name="searchlist" id="shoplist" indexId="i"
    offset="0">
    <bean:define id="temp" value="${i%5}">
    </bean:define>

    <logic:equal name="temp" value="0">
    <tr>
    </logic:equal>