<?xml version="1.0" encoding="UTF-8"?>
<cheatsheet
      title="Validazione dei campi di input">
   <intro
         href="/mddtools.docs/html/guigen/faq/faq_validazione.html">
      <description>
         <b>Validazione dei campi di input</b> <br/>
Questo tutorial descrive i passi necessari all&apos;introduzione della validazione dei campi di input. <br/>
Prerequisito è aver completato il Cheat Sheet <b>Creazione di una schermata con campi di input e pagina di riepilogo</b>
      </description>
   </intro>
   <item
         title="1 - Creazione di un vincolo di obbligatorietà">
      <description>
         <b>Creazione di un vincolo di obbligatorietà</b><br/>
      </description>
      <subitem
            label="a) Nell&apos;editor strutturato, selezionare il TNS contenente il campo che si vuole rendere obbligatorio e nel tab delle properties, settare la property Required a &apos;true&apos;">
      </subitem>
   </item>
   <item
         title="2 - Creazione di un vincolo di validazione custom">
      <description>
         <b>Creazione di un vincolo di validazione custom di un widget</b>
      </description>
      <subitem
            label="a) Nell&apos;editor strutturato, selezionare il widget di cui si vuole validare il formato email e nel tab delle properties, settare la property Data type modifier a regexp: &apos;^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$&apos; (l&apos;espressione da introdurre nel campo è quella compresa tra gli apici)">
      </subitem>
   </item>
   <item
         title="3 - Creazione di un vincolo di validazione di tipo range">
      <description>
         <b>Creazione di un vincolo di validazione di tipo range</b>
      </description>
      <subitem
            label="a) Nell&apos;editor strutturato, selezionare il widget di cui si vuole verificare l&apos;aderenza del relativo valore numerico inserito al range e nel tab delle properties, settare la property Data type modifier a size:&lt;minsize&gt;,&lt;maxsize&gt;.">
      </subitem>
   </item>
   <item
         title="4 - Aggiungere outcome per la gestione di validazione fallita">
      <description>
         <b>Aggiungere outcome per la gestione di validazione fallita</b><br/>
Facendo riferimento alla schermata di ricerca del Cheat Sheet &quot;Creazione di una schermata con campi di input e pagina di riepilogo&quot;, ed in particolare al bottone &quot;btnCerca&quot; sarà necessario rivederne la logica dell&apos;event handler.
      </description>
      <subitem
            label="a) Nell&apos;editor strutturato selezionare l&apos;Event Handler associato al button btnCerca e, con il tasto destro selezionare delete. Questa operazione rimuoverà l&apos;intero ramo relativo al Sequence Command che avevamo precedentemente inserito.">
      </subitem>
      <subitem
            label="b) Nell&apos;editor strutturato selezionare l&apos;Event Handler associato al button btnCerca e, con il tasto destro &quot;New child... --&gt; Exec Command&quot;">
      </subitem>
      <subitem
            label="c) Selezionare L&apos;Exec Command appena creato e sul relativo tab Properties valorizzare la property Method name inserendo il nome del metodo di business da eseguire all&apos;atto del click sul pulsante btCerca (Es. cercaPersona).">
      </subitem>
      <subitem
            label="d) Selezionare L&apos;Exec Command appena creato e, con il tasto destro &quot;New Child... --&gt; Command Outcome&quot;">
      </subitem>
      <subitem
            label="e) Selezionare il Command Outcome appena creato e nel tab delle properties valorizzare la property Result code con OK">
      </subitem>
      <subitem
            label="f) Duplicare il command Outcome OK selezionandolo e con il tasto destro selezionare la voce Copy. Ora selezionare l&apos;Exec Command padre e con il tasto destro scegliere la voce Paste. Infine, modificare nel tab properties del Command Outcome duplicato, la property Result Code valorizzandola con la stringa KO.">
      </subitem>
      <subitem
            label="g) A questo punto selezionare il Command Outcome OK e con il tasto destro &quot;New Child... --&gt; Jump Command&quot;">
      </subitem>
      <subitem
            label="h) Nel tab properties del Jump Command valorizzare la property Jump To selezionando dal menu a tendina la schermata dei risultati di ricerca.">
      </subitem>
      <subitem
            label="i) Selezionare il Command Outcome KO e con il tasto destro &quot;New Child... --&gt; NOP Command&quot;">
      </subitem>
   </item>
   <item
         title="5 - Aggiungere uno Std Message Panel">
      <description>
         <b>Aggiungere uno Std Message Panel per la visualizzazione dei messaggi all&apos;utente</b>
      </description>
      <subitem
            label="a) Nell&apos;editor strutturato selezionare il Form Panel &apos;contenitore&apos; della schermaata di ricerca e con il tasto destro &quot;New child... --&gt; Std Message Panel&quot;">
      </subitem>
   </item>
   <item
         title="6 - Rigenerare il progetto">
      <description>
         <b>Rigenerare il progetto mdd</b>
      </description>
   </item>
   <item
         title="7 - Scrittura della logica dei controlli di validazione">
      <description>
         <b>Scrittura della logica dei controlli di validazione</b><br/>
Il metodo su cui agire si troverà nella classe <b>it.csi.${nomeProdotto}.${nomeComponente}.business.${nomeAppModule}.CPBE${nomeContentPanelContenenteLaSchermataDiRicerca}</b> ed il suo nome sarà ovviamente coerente cn quanto specificato nel Exec Command<br/>
A questo punto occorre implementare la logica di validazione  la quale dovrà, ai fini del tutorial, valorizzare sull&apos;oggetto <b>theModel</b> in input al metodo, la property <b>resultCode</b>. Naturalmente in caso di validazione passata verrà valorizzata a OK, in caso contrario a KO (in testa al metodo su cui agiamo vengono automaticamente generate le due costanti che rappresentano i due outcomes che abbiamo inserito nei punti 4e e 4f, si possono utilizzare quelle per la valorizzazione del resultCode)
      </description>
   </item>
   <item
         title="8 - Build e installazione progetto target">
      <description>
         <b>Build e installazione progetto target</b>
Abbiamo concluso tutte le operazioni.<br/> Ora sarà sufficiente buildare il progetto generato tramite il relativo <b>build.xml</b> e deployare l&apos;ear generato.<br/>
L&apos;applicazione risponderà all&apos;url: <b>${nomeHost}:${nomePorta}/${nomeComponente}/</b><br/>
Effettuare una ricerca e verificare la corretta implementazione delle logiche di validazione.
      </description>
   </item>
</cheatsheet>
