Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    317

    [STRUTS]Aiuto!!Settare una variabile presa da <bean:write

    Ciao a tutti, mi sono deciso a riscrivere il mio sito da puro JSP+Servlet all'utilizzo del framework Struts.
    Sono fermo però ad un problema: Avrei bisogno di inserire un po di codice java nella mia JSP e in particolare ho bisogno di settare questa variabile:
    <%
    String nomeProprietario =

    il problema è che questo valore è disponibile da un oggetto Acquisto con il metodo
    public String getProprietario()
    {
    return proprietario;
    }
    Tale oggetto (dopo essere stato istanziato e tutte le variabili settate con valori presenti nel DB) viene messo all'inteno di una List di n oggetti Acquisto.
    Il BeanForm ha ovviamente i 2 metodi:
    public void setResult(List v)
    {
    result = v;
    }
    public List getResult()
    {
    return result;
    }
    nella JSP controllo che il result contenga qualcosa e poi faccio
    <logic:itarate id="bean" name="BeanForm" property="result">


    Proprietario: <bean:write name="bean" property="proprietario"/></p>
    // Questa parte funziona, mi scrive correttamente il nome di tutti i proprietari, il mio problema //è che dovrei fare una cosa di questo tipo
    <%
    String NomeProprietario = <bean:write name="bean" property="proprietario"/> %>
    //per ogni oggetto trovato nella List, solo che ovviamente questo non si può fare...
    </logic:itarate>

    Come posso fare per risolvere il problema, potreste aiutarmi?
    Grazie


  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    56
    codice:
    <logic:iterate id="bean" name="BeanForm" property="result">
    <bean:define id="acquisto" name="bean" type="Acquisto"/>
    <%
    String NomeProprietario = acquisto.getProprietario();
    //.................
    %>
    </logic:iterate>
    Nel tipo del tag <bean:define> va inserito il nome fully-qualified di Acquisto (con tutto il package).

    E' fortemente sconsigliato utilizzare scriptlets nelle view di Struts: puoi senz'altro trovare un modo di fare la stessa cosa senza usarle.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    317
    Grazie mille per la risposta tempestiva...
    Cosa intendi con utilizzare scriptlets nelle view di Struts...L'utilizzo sconsigliato è riferito a quello di utilizzarli in codice Java all'interno della JSP???...cioè
    <%
    String NomeProprietario = acquisto .getProprietario();
    %>
    E' questo che mi sconsigli di utilizzare non il <bean:define> vero !?!? Lo dico perchè sto rifacendo un sito già funzionante al 100% perchè voglio provare ad attenermi il più possibile alle regole dell'MVC quindi già che sto rifacendo tutto voglio provare a farlo al meglio.

    Ho provato una soluzione alternativa:
    <logic:itarate id="bean" name="BeanForm" property="result">
    <bean:define id="owner" name="bean" property="acquisto"/>

    // il metodo
    public Acquisto getAcquisto()
    {
    return new Acquisto(oid);
    }
    Anche la classe Acquisto ha tutti i metodi getter e setter correttamente implementati.

    quindi ora posso usare
    <bean:write name="owner" property="username"/> ...

    Così non ho neppure una riga di codice java nella pagina JSP...
    Va meglio così ?!?
    Grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    56
    Sconsigliato è usare le scriplet nelle view, ovvero il codice Java nei tag <% ...%>.
    Comunque non ho capito cosa vuoi fare: dall'ultimo esempio sembra che vuoi solo stampare i proprietari, mentre nel primo post era quello che dicevi che non era sufficiente, ma che volevi recuperare il nome in una String per poi trattarlo con del codice.
    Spiega il problema.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    317
    La tua prima risposta mi ha dato l'input per vedere tutto chiaramente...avevo visto un problema dove in realtà non c'era...
    E' bastato sistemare leggermente le classi del Model per ottenere una soluzione pulita e senza codice java nelle jsp.
    Ero disperato, avevo intenzione di recupare l'oid dei proprietari e istanziare un oggetto del Model all'interno della jsp <% Owner owner = new Owner(oid);%>... VVoVe: Tantovaleva lasciare il sito così com'era !!!!!
    Il mio post era un esempio per velocizzare la domanda; in pratica ogni utente ha un carrello che può essere pieno di oggetti, questi oggetti però non sono del "proprietario del sito"(o del negozio che rappresenta) ma sono tutti oggetti di altri utenti registrati.
    Il risultato visivo che si vuole ottenere nella JSP di viewCarrello è ovviamente l'elenco di tutti gli oggetti con affianco a ciascun oggetto una scheda del proprietario che mostra alcune informazioni standard.

    Purtroppo a questo progetto sto lavorando da solo perchè voglio semplicemente trasformare il sito di sole jsp in un sito struts based...
    Sai quando sono ore che programmi e ad un certo punto ti sembra che ....
    Grazie comunque, ci risentiamo al prossimo intoppo :master:

    :maLOL:

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1
    Ciao,
    io ho lo stesso problema che aveva riscontrato Anuelicon e a cui poi non è stato risposto.

    In pratica sono all'interno di un iterate e devo recuperare un campo tramite java per usarlo più avanti:


    codice:
    <logic:iterate id="myId" name="myForm" property="myList">
    			
      <%
      // Creo la stringa da mettere 				
      String elenco = "";
      elenco = <jsp:getProperty name="myId" property="desc"/> 
      elenco += "_" + String.valueOf(Constants.OPTIONS);	
      %>
    			
      <tr height="25">
        <td align="right"><jsp:getProperty name="myId" property="desc"/></td>
        <td align="left">
          <html:select styleClass="normal10" name="myId" property="selectId">
            <html:option value="<%= String.valueOf(Constants.SELECT_VALUE) %>"> 
              <bean:message key="common.label.select" />
            </html:option>
            <logic:present name="<%= elenco %>">
              <html:options collection="<%= elenco %>" property="value" labelProperty="label" />
            </logic:present>
          </html:select>
        </td>
      </tr>
    			
    </logic:iterate>
    In pratica è la riga in grassetto il problema. Devo aver il valore della property per usarla in seguito all'interno del select.

    Qualcuno mi sa aiutare?
    Grazie
    ---
    Avanti sempre e comunque!
    ---

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    69
    sono parecchio stanco e per questo non ho seguito per bene i vari post intermedi ma mi sembra che devi semplicemente definire una variabile tramite il tag bean:define:

    Codice PHP:
    <bean:define id="elenco" name="myId" property="desc" /> 
    Questa riga di codice crea una variabile con ambito pagescope (visibile solo dalla jsp). Quindi puoi tranquillamente utilizzarla all'interno di uno scriptlet:

    Codice PHP:
    <logic:present name="<%= elenco %>">
        <
    html:options collection="<%= elenco %>" property="value" labelProperty="label" />
    </
    logic:present
    Questa soluzione è stata implementata diverse volte nei miei progetti.

    Anzi puoi provare addirittura questo (senza scriptlet), però non garantisco che funzioni:

    Codice PHP:
    <logic:present name="elenco">
        <
    html:options collection="elenco" property="value" labelProperty="label" />
    </
    logic:present
    Dovrebbe funzionare perché l'attributo name scandaglia i vari scope alla ricerca del valore passato come parametro. Se non erro parte dalla sessione per arrivare a pagescope.

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.