0

私のコードはfirst.jspの下のようなものです

     <%
            List<BpsBiller> bpsBiller = (List<BpsBiller>)session.getAttribute("biller");
        System.out.println("bpsBiller size ----->"+bpsBiller.size());

             for(BpsBiller biller:bpsBiller){
                byte[] imageData =new byte[1024];  
                imageData = (byte[])biller.getIcon();
                session.removeAttribute("blobData");
                session.setAttribute("blobData",imageData);

            %>
            <span style="padding:10px;">    
            <a href="javascript:fetchBillerFields('<%=biller.getBillerId()%>');">       

                <img src="<%=request.getContextPath()%>/transactions/billerImages.jsp"  alt="biller logo" border="1" height="50" width="50">

            </a> 
            </span> 
        <%      

            }

        %>

そして、私の billerImages.jps コードは次のようになります

<%
try{

    byte[] imageData =new byte[1024];
    imageData = (byte[])session.getAttribute("blobData");

    int len = imageData.length;

    if(imageData!=null){

        int len1 = imageData.length;        


        response.setContentType("image/jpeg");      
        response.setHeader("Content-disposition","attachment; filename=" +"test");

        response.getOutputStream().write(imageData,0,len);          
        response.getOutputStream().flush();        
        response.getOutputStream().close();
       System.out.println("5");
    }
    System.out.println("6");
    session.removeAttribute("blobData");


}catch(Exception e) {
    e.printStackTrace();
    System.out.println("--error--"+e.getMessage());
}
%>  

First.jsp では、ビラー リストをセッションから bpsBiller として取得しています。これには、billerId があります。billerId に基づいて、画像を表示しています。

billerImages.jsp を使用して画像を表示しています。そして、画像は既存のデータベーステーブルから来ています。ビラーリストは私がセッションに入れたものです。このセッションからのアイコン (blob データ型)。getAttribute("請求者");

休止状態を使用しています。「ビラー」は、Struts2 アクション クラスからのビラーのリストです。データベースからビラーを取得するために休止状態を使用しました。

しかし、私の問題は、リストを取得していることです。そして、データベースにはno.ofの画像があります。リストに 10 件のレコードがある場合、10 件の画像が表示されます。しかし、1 ~ 10 件のすべてのレコードで 10 番目の画像のみが表示されます。合計10枚の異なる画像を取得する必要があります。

これを解決するのを手伝ってください。

4

1 に答える 1

0

画像を blob としてセッションに配置しないでください。代わりに、イメージ ID をパラメーターとして渡します。

<img src="<%=request.getContextPath()%>/transactions/billerImages.jsp?id=<%=biller.getBillerId()%>"  alt="biller logo" border="1" height="50" width="50">

そして、billerImages.jspそのパラメーターを取得してデータベースにクエリを実行し、毎回それに属する画像を返します。

画像を保存する方法としてセッションを引き続き使用する場合は、すべての画像に同じ属性を使用しないでください。

session.setAttribute("blobData" + biller.getId(),imageData);

于 2012-12-25T09:17:51.330 に答える