Regexp/Link
June 14, 2006 on 1:40 am | In Java, Linguaggi |In questo periodo, come si può capire dai post precedenti, sto smanettando un pò con Java. L’altro giorno pensavo a un modo per ottenere in modo facile e dinamico una serie di links da caricare in una pagina a seconda dei parametri di sessione (ad esempio, user autenticato).
Il problema si risolve facilmente creando, ad esempio, un array bidimensionale: nel primo si potrebbero inserire i "nomi" dei links che vengono visualizzati sulla pagina e nel secondo si potrebbere associare gli indirizzi a cui ogni cella del primo array deve puntare. L’utilizzo di un array bidimensionale, però, non mi entusiasmava per mi è sembre sembrato poco "elegante". Quindi???
La soluzione è subito detta: usare un unico array e la potenzialità delle espressioni regolari per poter associare ad un’unica cella più valori contemporaneamente. In pratica in ogni cella si inseriscono il nome del link da visualizzare e subito dopo l’indirizzo della pagina a cui puntare. Inoltre si fanno separare i due valori da un carattere speciale a nostra scelta, ad esempio "|" (linea verticale, pipe). Quando è il momento di utilizzare il link si usano le espressioni regolari per ottenere in modo separato i due valori tagliando l’intera stringa contenuta nella cella (e cioè formata come "nomelink | indirizzo") e utilizzandoli in modo adeguato. Ecco un piccolo esempio in una pagina JSP.
<%
String[] arrayLinks = {"nomeA|indirizzoA", "nomeB|indirizzoB", "nomeC|indirizzoC"};
Pattern patter = Pattern.compile("\\|"); //si fa precedere la pipe da due backskash per è un carattere speciale nelle espressioni regolarifor (int i = 0; i < arrayLins.lenght; i++){
String[] link = pattern.split(arrayLinks[i]);%>
<a href="<%= link[0] %>"><%= link[1] %></a>
<% } %>
L’array ovviamente può essere costruito in modo dimanico in base a determinate condizioni che si potrebbero verificare. Inoltre questo metodo può essere utilizzato in varie situazioni, ad esempio associando ad ogni cella dell’array inizialiale più di due valori (coordinate tridimensionali, ad esempio). I vantiggi che saltano subito all’occhio è che il codice risulta più pulito, non si devono usare due o più cicli "for" per elaborare il contenuto e di conseguenza si hanno meno indici da gestire.
return -1
2 Comments »
RSS feed for comments on this post. TrackBack URI
Leave a comment
Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds.
Valid XHTML and CSS. ^Top^
In java puoi usare un’altra soluzione (non ho la più pallida idea di JSP): creare una classe con due campi, uno per il nome, l’altro per l’indirizzo. Poi utilizzi un array di questi oggetti, così hai un codice ancora più pulito e non hai l’inefficienza delle espressioni regolari.
Comment by mpolci — June 14, 2006 #
Auearrrr! Straordinerio.
Comment by Santana — June 14, 2006 #