Provare a evitare di reinventare la ruota qui. Ho una pagina di Google Web Toolkit che sto preparando per la distribuzione, ma il servizio web con cui sto comunicando avrà un indirizzo relativo diverso sul server distribuito rispetto alla mia macchina di prova locale.Configurazione lato server per GWT
Come tale, sto cercando un modo semplice per implementare con una sorta di file di configurazione facilmente modificabile che posso mettere le impostazioni di base sul lato server. Ho un paio di idee su come farlo, ma sembrano un po 'hacky e mi sembra che ci sia già una soluzione per questo tipo di problemi (dopo tutto, le impostazioni per server sono una cosa MOLTO comune!)
Qualche idea?
Edit: Dal momento che questo non sembra essere attirare molta attenzione, mi permetta di delineare i miei pensieri iniziali: Conservare un file statico locale per i file GWT che ho query con una chiamata AJAX prima di qualsiasi altra logica. Quando il file viene restituito, analizzo i miei dati e li memorizzo come vars accessibili a livello globale, quindi consentono l'esecuzione della logica di creazione di pagine. Sembra goffo, e c'è il grande svantaggio di aspettare che l'AJAX ritorni prima del caricamento, ma funzionerebbe. Qualche suggerimento migliore? (Si prega di?)
mia soluzione: ho trovato una soluzione per conto mio, ma è abbastanza specifico per il mio scenario esatto in modo da non so quanto sia utile sarebbe per l'utente generale. Lo posterò qui comunque nella remota possibilità che qualcuno lo trovi utile.
La pagina su cui sto lavorando è in realtà un controllo GWT incorporato in un sito ASP.net. Approfittando di questo, e della mia scoperta della classe Dizionario GWT, ho messo insieme un sistema "impostazioni" come questo:
Innanzitutto, l'impostazione che voglio (in questo caso un indirizzo per un servizio web) è impostata nell'ASP .net file di
<appSettings>
<add key="serviceUrl" value="http://mySite.com/myService.asmx"/>
</appSettings>
web.config nella pagina ASP che è incorporare il controllo di GWT, aggiungo una "statica" javascript oggetto che contiene le impostazioni di configurazione che ho bisogno:
<head runat="server">
<title>Picklist Manager</title>
<script type="text/javascript" language="javascript">
var AppConfig = {
serviceUrl: "<%= ConfigurationManager.AppSettings["serviceUrl"] %>"
};
</script>
<script type="text/javascript" language="javascript" src="gwtcontrol.nocache.js"></script> <!-- Include my GWT control -->
</head>
Infine, in GWT Creo una classe "AppConfig" statica che espone questa impostazione in questo modo:
public class AppConfig {
public static String serviceUrl = "defaultUrl";
public static void Initialize() {
Dictionary appConfig = Dictionary.getDictionary("AppConfig");
if(appConfig == null) { return; }
servicePath = appConfig.get("serviceUrl");
}
}
Da lì posso chiamare AppConfig.serviceUrl ovunque nel mio codice per ottenere l'impostazione ... wow! Quindi sì, questo è un modo lungo e complicato per farlo, ma funziona per me. Tra le risposte date, quella di Alexander sembra più in linea con quello che stavo cercando, quindi la taglia va a lui, ma grazie a tutti quelli che hanno lanciato il mio piccolo problema appiccicoso!
Il tuo secondo link funzionava :) Penso che il primo sia semplicemente formattato divertente, ma ottiene il risultato. Vedrò questo metodo ... – Toji
Wow ... questo è un esempio abbastanza complicato. Non sono sicuro di quale parte dovrei guardare. Ho capito che PropertyOracle è qualcosa che ottengo attraverso un generatore, ma cosa fa il generatore per me, e come lo userei? Normalmente sono abbastanza bravo a leggere queste cose, ma mi sento come se mi mancasse molto contesto in questo caso. :( – Toji
Ho bisogno di questo comunque per un progetto, quindi lo scaverò subito. –