Lucee 5 - Un problema su Eurodate

  • 12
  • Mar 2018
  • Dev @ Contech Lab
  • View: 15648 | 0 Comments

  • cfml | form | lucee

  • 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
    view plain print about
    <!--- --->
    <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>