mercoledì 20 marzo 2013

Tomcat - IOException while loading persisted sessions

Questo errore si verifica quando Tomcat non riesce a ripristinare il valore della sessione.
Tale valore si trova in un file serializzato denominato SESSION.ser all'interno della directory work di Tomcat.
E' necessaria la pulizia della directory work o anche la sola cancellazione del file .ser.


mercoledì 13 marzo 2013

showModalDialog problemi con IE 8

Ho verificato il seguente tipo di problema utilizzando lo showModalDialog soltanto con IE8, mentre tutto funzionava correttamente con Firefox e Chrome.
Il requisito era di aprire in modale una finestra e consentire al suo interno la navigazione mantenendo inibita la possibilità di cliccare sulla finestra padre.
Il problema che si verificava era che al primo click all'interno della finestra modale, invece di proseguire la navigazione normalmente, veniva aperta una nuova finestra , su cui poi si navigava correttamente.
C'era quindi la seguente situazione:
  1. Finestra di partenza, da cui si apre con showModalDialog l'applicazione che si vuole visualizzare in modale;
  2. Finestra dell'applicazione iniziale, sulla quale  clicco per navigare;
  3. Finestra aperta dall'interno della finestra modale.
Insomma  una situazione molto strana ed anomala nonchè, ripeto, esistente soltanto su Internet Explorer.
Navigando su internet ho trovato questo interessante articolo in merito che mi ha aiutato a risolvere il problema: http://jwcooney.com/2011/12/22/showmodaldialog-opens-a-new-window-on-submit-or-location-href/  .

Sintetizzando ci sono due strade da seguire:

  1. Nella pagina che si apre in modale inserire all'interno del tag head il seguente tag: <base target="_self" /> ;
  2. Effettuare il submit del form aperto in maniera modale via javascript utilizzando un tag anchor hidden nel form (<a href=”" id=”goLocation” style=”display:none;”> ).
Con il primo modo non mi ha funzionato, con il secondo invece si.
Quindi via javascript bisogna chiamare un metodo che imposti la proprietà href con l'action desiderata e quindi effettui il click.
Una cosa del tipo:

document.getElementById('goLocation').href = 'myAction.do?par1=x&par2=y';
document.getElementById('goLocation').click();

Si noti come  è necessario passare i parametri desiderati in querystring, per cui nel caso di form con molti campi ci sarà un lavoro pesante di javascript per settare i parametri corretti.

La mia paura a questo punto è stata quella di dover sostituire alla modalità standard di post del form sempre questa via tag anchor e javascript ma non è stato necessario, è bastato fare questa modifica solo nella pagina su cui si apre la finestra in modale, per il resto è rimasto tutto tale e quale.

martedì 12 marzo 2013

Verificare se ci sono errori nel contesto JSF

Per verificare la presenza di SEVERITY_ERROR nel contesto JSF ho usato questo metodo di utilità:


public static boolean isErrorInContext(){
  boolean retVal=false;
  List list=FacesContext.getCurrentInstance().getMessageList();
  for(FacesMessage m:list){
   if(m.getSeverity().equals(FacesMessage.SEVERITY_ERROR))
   {
    retVal=true;
    break;
   }
  }
  return retVal;
 }


Jquery disabilitare tasto backspace con filtro su campi testo

Con il seguente script jquery (testato su IE8 e firefox 19) è possibile fare in modo che sia disabilitato il tasto back space per tutti i componenti tranne che per le input type="text" (in questo caso infatti il backspace ci è utile per cancellare eventuali refusi ortografici):


 $(document).keydown(function(e) {
 if (e.keyCode == 8  && e.target!="[object HTMLInputElement]" ) {
   return false;
  };
           
        };
        
    });


giovedì 7 marzo 2013

Apache POI impostare pagina orizzontale

Con queste semplici istruzioni su apache po 3.9 è possibile impostare il foglio in modo che sia tutto presente su una pagina e impostato orizzontale .
La proprietà per l'impostazione pagina orizzontale è la setLandScape(true) sull'interfaccia org.apache.poi.ss.usermodel.PrintSetup

Esempio:


HSSFSheet sheet = wb.createSheet(nome);
sheet.setAutobreaks(true);
PrintSetup ps = sheet.getPrintSetup();
ps.setLandscape(true);
ps.setFitHeight((short)1);
ps.setFitWidth((short)1);


Sql Server select con WHEN e ALIAS

Ci sono due modi di utilizzo delle select con la clausola WHEN.
Si può scrivere qualcosa di questo tipo:

....,
case TIPO_SOGGETTO
WHEN 'PF' then 'Persona Fisica'
WHEN 'PG' then 'Persona Giuridica'
end ,
.....


In questo caso nella esecuzione dell'sql si avrà come intestazione di colonna proprio il campo TIPO_SOGGETTO.
Nel caso in cui si vogliano invece avere degli alias occorre modificare leggermente la sintassi.
Supponiamo ad esempio di applicare per due volte la stessa condizione vista sopra per esporre risultati  diversi,volendo evitare la ripetizione del nome colonna:

......,
case 
WHEN TIPO_SOGGETTO='PF' then 'Persona Fisica'
WHEN TIPO_SOGGETTO='PG' then 'Persona Giuridica'
end as TIPOLOGIA,
case 
WHEN TIPO_SOGGETTO='PF' then (LTRIM(RTRIM(s.nome))+ ' '+LTRIM(RTRIM(s.cognome))) 
WHEN TIPO_SOGGETTO='PG' then (LTRIM(RTRIM(s.denominazione))) 
end as DENOMINAZIONE_SOGGETTO ,
.......

martedì 5 marzo 2013

Jquery show hide div


Con Jquery sono disponibili due comode funzione che si occupano di realizzare lo show/hide dinamico di un div:
  • La funzione toggle;
  • La funzione slideToggle che da un effetto "slide" all'animazione.
Di seguito un esempio

Codice javascript



function toggleDiv(divId) {
   $("#"+divId).slideToggle("slow");
   var v=$("#linkGuida").text();
  
   if(v=="Guida on-line"){
    $("#linkGuida").html("Nascondi guida on-line");
    }
   else
    {
    $("#linkGuida").html("Guida on-line");
    }
}



Codice html


<br/>
<a href="javascript:toggleDiv('qwerty');"   ><span id="linkGuida">Guida on-line</span></a>
<br/>
<div id="qwerty" style="display:none">
<fieldset>
<legend>
Nomenclatura 
</legend>
<ul>
  <li><b>BOT:</b> Buono ordinario del tesoro</li>
  <li><b>BTP:</b> Buono del tesoro pluriennale</li>
  <li><b>CTZ:</b> Obbligazione del tipo Zero Coupon (solo maxicedola finale)</li>
</ul>
</fieldset>

</div>
 

Vediamo l'esempio all'opera (cliccare sul link 'Guida on line')

Guida on-line