Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Struts layout:collection problema rendering image

    Salve a tutti, sono nuovo di questo forum e vorrei esporre un problema che si verifica utilizzando una Struts layout:collection all'interno di una jsp il cui codice è questo:

    </table>
    <layoutager maxPageItems="4" sessionPagerId ="currentPage">
    <layout:collection name="WebinretForm" property="listaProdotti" id="elemento" width="100%"
    styleClass="FORM" sortAction="client"
    <layout:collectionStyle >
    <layout:collectionItem title="Codice Prodotto"
    property="codprodotto" width="30%" sortable="true"
    href="dettaglioProdotti.do?reqCode=visualizzadetta glio"
    paramId="id"
    paramProperty="id">
    <bean:write name="elemento" property="codprodotto" />
    <bean:define id="id" property="id" name="elemento"></bean:define>
    <layout:img action="dettaglioProdotti.do?reqCode=visualizzaimm agine&id=${id}"/>
    </layout:collectionItem>
    <layout:collectionItem title="Descrizione Prodotto"
    property="descrizione" width="30%" sortable="true"
    href="dettaglioProdotti.do?reqCode=visualizzadetta glio"
    paramId="id"
    paramProperty="id">
    <bean:write name="elemento" property="descrprodotto" />
    </layout:collectionItem>
    <layout:collectionItem title="Produttore"
    property="produttore" width="30%" sortable="true"
    href="dettaglioProdotti.do?reqCode=visualizzadetta glio"
    paramId="id"
    paramProperty="id">
    <bean:write name="elemento" property="produttore" />
    </layout:collectionItem>
    </layout:collectionStyle>
    </layout:collection>
    </layoutager>

    Controllando l'esecuzione col Debug mi accorgo che prima viene concluso tutto il ciclo e
    poi parte l'action richiamata col tag img eseguita tante volte quanto sono gli elementi della
    collection ma passando come indice dell'immagine da renderizzare quello corrispondente all'ultimo elemento della collection. Morale della favola viene visualizzata accanto ai prodotti sempre l'ultima immagine. Sicuramente sbaglio qualcosa, ma non so dove.
    Grazie a tutti per il vostro aiuto.

    P.s.
    Ho provato a sostituire la collection con una logic:iterate ma non cambia niente :
    prima viene eseguito tutto il ciclo e poi partono le action con il valore dell'ultimo id.

  2. #2
    Volevo aggiungere che l'utilizzo del tag layout:img seguito dalla action è dovuto al fatto che le immagini non risiedono sul filesystem ma sono memorizzate su un campo di tipo Blob esistente nella listaProdotti e proveniente dal data base. A tal proposito posto il codice della action visualizzaimmagine.

    codice:
    public ActionForward visualizzaimmagine( ActionMapping mapping,
                                                           ActionForm form, 
                                                           HttpServletRequest request,
                                                           HttpServletResponse response) throws Exception
     {
          WebinretForm formBean = (WebinretForm)form;
          Integer id = formBean.getId();
          formBean.setTipoTab("Prodotti"); 
         Blob img = formBean.getListaProdotti().get(id).getImmagine(); 
         byte[] imgData = null ; 
         imgData = img.getBytes(1,(int)img.length()); 
         response.setContentType("image/jpg"); 
         response.getOutputStream().write(imgData);
         return null;  
      }
    Il problema sta nella valorizzazione del campo id che assume il valore dell'ultimo elemento della collection. Ma è normale che la action della layout:img venga eseguita temporalmente alla fine della collection o iterazione che sia ?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.