Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    54

    [Struts 2] come settare il valore di un parametro e di una s:text ?

    Ciao a tutti,
    sono nuovo nel mondo di struts 2, ho necessità di impararlo in quanto dove lavoro lo usano spesso.
    Ho iniziato solo oggi a provare qualcosina, una mini applicazione web . Ho configurato su linux netbeans 6.9 con server tomcat6 e ho scaricato il plugin ufficiale di struts 2 per netbeans dal sito ufficiale di netbeans.

    Ho seguito svariate guide in giro e dopo un po di prove credo di avere più o meno capito come funziona anche se molte cose ancora non mi quadrano per niente.

    Ero abituato in JSP a fare degli if e tra questi chiudere il tag %> e scrivere un valore che veniva poi visualizzato sulla pagina HTML.
    ad esempio:

    codice:
    <%if(i==0) {%>
     ciao <%}else{%>bye
    <%}%>
    Ho notato che in struts 2 con il tag <s:if> funziona molto diversamente e ancora non riesco a capire quanto\come diversamente

    Per iniziare, con il mio progetto ho fatto una semplice jsp che tramite due url richiama una classe che a sua volta richiama delle variabili da dei file XML (o perlomeno mi pare di aver capito che funzioni così).
    Adesso il mio problema sta nel fatto che queste variabili le stampo a video alla prima apertura della pagina.. e quindi non sono valorizzate e mi stampa il "name" delle <s:text> . ho provato svariate volte con degli s:if s:elseif e s:else a evadere la cosa ma proprio non capisco come funziona! in alcuni casi ha funzionato ma poi al riavvio del server mi stampava di nuovo il contenuto delle s:text (non il valore) oppure non stampava assolutamente nulla.

    La mia jsp è questa:


    codice:
    <%@ page contentType="text/html; charset=UTF-8" %>
    
    <%@ taglib prefix="s" uri="/struts-tags" %>
    
    <html>
        <head>
            <link rel="stylesheet" href="<s:url value="/jsp/css/style.css" />" type="text/css">
            <title>WebSite</title>
        </head>
    
        <body>
            <div id="container">
            
            <div id="menu">
                    <s:url id="url" action="content">
                        <s:param name="request_locale">home</s:param>
                    </s:url>
                    <s:a href="%{url}">Home Page</s:a>
                    <s:url id="url" action="content">
                        <s:param name="request_locale">contatti</s:param>
                    </s:url>
    
                    <s:a href="%{url}">Contatti</s:a>
            </div>
            <div id="content">            
                <s:text name="content.message" />           
            </div>
             <div id="footer">             
                 <s:text name="content.azione" />             
             </div>
            
            </div>
        </body>
    </html>
    la mia classe in java si trova in un package "core" e si chiama "content" :
    codice:
    
    package core;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class content extends ActionSupport {
    
        public String execute() throws Exception {
            setMessage(getText(MESSAGE));
            setAzione(getText(AZIONE));
            return SUCCESS;
        }
    
      
        public static final String MESSAGE = "content.message";
        public static final String AZIONE = "content.azione";
    
       
        private String message;
    
       
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
    
        private String azione;
    
    
        public String getAzione() {
            return azione;
        }
    
        public void setAzione(String azione) {
            this.azione = azione;
        }
    }
    Ringrazio anticipatamente qualsiasi aiuto
    PS: spero di essermi spiegato bene...

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    309
    Ciao
    devi indicare nel web.xml l'action a cui far corrispondere la classe e la view (jsp)
    codice:
    .....
    <action name="nomeAction" class="core.content">
                <result>page.jsp </result>
     </action>
    .....
    quando ti collegherai all'indirizzo miaApp/nomeAction il valore dovrebbe popolarsi
    tomcat 6.016
    netbeans 6.1

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    54
    fin qui tutto ok, ma come fare a valorizzare quelle due s:text se invece apro l'applicativo la prima volta?

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    54
    EDIT: mi rispondo da solo.. potrei provare ad utilizzare dei tag di JSF, tipo un otuput text con un rendered ?

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    54
    Ho risolto... in una maniera semplicissima,
    nel package non avevo definito il file package.properties di default, l'ho creato e ci ho impostato i valori di default. poi nella jsp ho semplicemente scritto <s:text name="message" /> senza il nome della classe davanti

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.