lunedì 29 luglio 2013

Resettare valore autoincrement di una chiave primaria

Nel caso di chiavi primarie del tipo autoincrement è possibile resettarle con la seguente istruzione

DBCC CHECKIDENT ([NOME_TABELLA], RESEED, 0)



giovedì 25 luglio 2013

Commenti server side su JSF

Con JSF 2.0 non è più possibile utilizzare il tag di commento server side delle JSP, ossia

<%-- comments --%>



Si possono ovviamente utilizzare i classici commenti html:

<!-- comments  -->



Ma il solito inconveniente è che questi commenti sono poi riportati nella pagina web generata, appesantiscono il sorgente htmle se dobbiamo fare del debug con bugzilla e altri software sono solo un fastidio.
E' possibile però in maniera elegante far si che tutti i commenti HTML utilizzati non siano riportati nelle nostre pagine web.
E' sufficiente per fare ciò configurare sul web.xml il seguente context param:


<context-param>
    <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
    <param-value>true</param-value>
</context-param>


In alternativa si può utilizzare sulla singola pagina il tag
<ui:remove> 
sui singoli commenti da escludere sulla pagina xhtml.

lunedì 22 luglio 2013

CamelCase di una stringa

Metodo per ottenere una stringa in formato camel case,

public static String toCamelCase(String s){
  StringBuffer sb=new StringBuffer();
  if(!isNullOrEmpty(s)){
   StringTokenizer st=new StringTokenizer(s," ");
   while(st.hasMoreElements()){
    String testo=st.nextToken();
    sb.append(testo.substring(0, 1).toUpperCase());
    sb.append(testo.substring(1).toLowerCase());
    sb.append(" ");
   }
  }
  else
  {
   sb.append("");
  }
  
  return sb.toString();
 }



venerdì 19 luglio 2013

Exception in thread "main" java.lang.NoSuchMethodError: javax.xml.ws.WebFault.messageName()Ljava/lang/String

Questo errore si è verificato nell'interrogazione di un web service scritto utilizzando JAX-WS 2.2.8
su un Tomcat 7 con la jdk 1.6.
Il problema è che di default la jdk 1.6 utilizza JAX.WS 2.1 e  l'attributo messageName sulla annotation javax.xml.ws.WebFault è stato introdotto solo con la versione JAX WS 2.2.
Per risolverlo ho utilizzato il sistema delle librerie endorsed di Tomcat.
I passi da seguire sono abbastanza semplici.
Bisogna creare una directory denominata endorsed dentro la root di Tomcat,tipicamente allo stesso livello della cartella webapps.
Qui dentro bisogna inserire i 2 jar (versione 2.2 ovviamente):

  • jaxb-api.jar;
  • jaxws-api.jar

Occorre poi verificare che la variabile java.endorsed.dirs punti correttamente alla nostra directory.
Ad esempio nei parametri di start up del servizio (nel tab java se lanciamo l'utiliti tomcat7w.exe //ES//nomeServizio) assicuriamoci che ci sia il seguente settaggio:

 -Djava.endorsed.dirs=D:\lavoro\apache-tomcat-7.0.3\endorsed

Trim in javascript

Per effettuare il trim di una stringa Javascript non ha funzioni built in.
Si può utilizzare la seguente funzione


function trim(s)
{ 
   return s.replace(/^\s+|\s+$/g, ''); 
}



Per testarla scrivi un testo e premi il pulsante, il testo trimmato è racchiuso tra i caratteri "*"


lunedì 15 luglio 2013

Rilanciamento eccezioni con "type-checking" inclusivo

Questa feature introdotta con la Java 7 e ben spiegata nel sito oracle (http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html#rethrow) consente di rilanciare eccezioni specifiche senza dover utilizzare la generica Exception.
Il compilatore infatti a Runtime è in grado di capire di quale eccezione si tratta.
Vediamo un esempio:


public class Exceptions {
   static class Eccezione1 extends Exception { }
   static class Eccezione2 extends Exception { }
   public static  void rethrowException(String exceptionName) throws Eccezione1,Eccezione2 {
     try {
      switch(exceptionName){
      case "uno":
       throw new Eccezione1();
      case "due":
      throw new Eccezione2();
      default:
       System.out.println("Nessuna eccezione");
      
      }
      
     } catch (Exception e) {
       throw e;
     }
   }
}


Nelle versioni precedenti di Java saremmo stati costretti a mettere nel throws Exception, adesso invece possiamo rilanciare le nostre eccezioni specifiche.


mercoledì 10 luglio 2013

Content is not allowed in prolog

Questo errore generico si verifica durante la lettura di un xml, il motivo è che c'è uno spazio (o comunque un qualche carattere, prima dell'inizio del tag  <?xml