Lucee 5 - Un problema su Eurodate
Dopo qualche test sulla Versione 5 dell'application server Lucee, che indubbiamente in termini di performance rappresenta un bel salto in avanti per chi gestisce applicazioni con linguaggio cfml, non manca qualche Bug o qualche semplice problema di compatibilità con le versioni precedenti di Coldfusion. Purtroppo nel nostro caso è ancora necessario percorrere la strada dei test di compatibilità in quanto alcune applicazioni gestioni sono ancora legate al mondo Adobe Coldfusion. Tra i problemi di compatibilità riscontrati, c'è la mancata gestione dell'option "_eurodate", funzione ancora supportata da Coldfusion anche alla versione 11. Problema che comporta non pochi problemi per chi utilizza formati data in versione EU (gg/mm/yyyy) e che rischia di mandare in errore le query su database in presenza di funzioni come CreateOdbcDate. Questa ISSUE è stata segnalata al supporto tecnico Lucee che si occupa del supporto e della sua implementazione. Lo staff in questo ha risposto che questa funzione è attualmente poco utilizzata e Ok capiamo (sicuramente è una cosa che viene dal passato) che occorre procedere con un refactoring del codice in modo da usare una soluzione diversa.
La soluzione trovata è la seguente, da immettere nel Application.cfc in modo da risolvere questo problema di compatibilità In pratica un semplice loop sugli elementi form e la normalizzazione del valore passato, utilizzando una funzione Mask per la corretta formattazione
<!--- --->
<cfscript>
function onRequestStart(){
if(structKeyExists(form,'fieldnames')) {
loop struct=form index="local.k" item="local.v" {
if(structKeyExists(form,k&"_eurodate")) {
form[k]=parseDateTime(v,euroDateMask);
form[k&"_eurodate"]="";
}
}
}
}
</cfscript>
<cfscript>
function onRequestStart(){
if(structKeyExists(form,'fieldnames')) {
loop struct=form index="local.k" item="local.v" {
if(structKeyExists(form,k&"_eurodate")) {
form[k]=parseDateTime(v,euroDateMask);
form[k&"_eurodate"]="";
}
}
}
}
</cfscript>