468x60

giovedì 24 maggio 2012

Embeddare pagine JSP in Vaadin

L'argomento largamente trattato in rete è quello di come embeddare un'applicazione Vaadin dentro una pagina JSP, ma c'è molto poco o nulla su come invece embeddare una pagina JSP dentro un'applicazione Vaadin... Vediamo come fare:
  • Copiare i files JSP che ci interessano direttamente sotto la cartella WebContent, oppure dentro una sotto-cartella che creeremo appositamente che chiameremo "jsps"
  • Editare il file web.xml aggiungendo il seguente servlet-mapping
<servlet-mapping>
   <servlet-name>jsp</servlet-name>
   <url-pattern>/jsps/*</url-pattern>
</servlet-mapping>
  • A questo punto l'ambiente è pronto, adesso dobbiamo solo creare un contenitore per embeddare la pagina, come abbiamo fatto nel precedente post
Window subwindow = new Window("Titolo");
subwindow.setWidth("90%");
subwindow.setHeight("90%");
subwindow.setModal(true);
Embedded e = new Embedded("", new ExternalResource("nomeApp/jsps/mypage.jsp");
e.setType(Embedded.TYPE_BROWSER);
e.setSizeFull();
VerticalLayout layout = new VerticalLayout();
layout.setSizeFull();
layout.addComponent(e);
subwindow.setContent(layout);
getWindow().addWindow(subwindow);

mercoledì 23 maggio 2012

Vaadin ed Embedded setSizeFull

Utilizzando Vaadin mi sono imbattuto in uno strano problema di layout col componente Embedded. In pratica, nonostante il componente fosse impostato con setSizeFull(), che equivale a setWidth("100%") e setHeight("100%"), verticalmente occupava solo una piccola parte dell'area disponibile.

Per risolvere il problema ho dovuto mettere il componente Embedded dentro un container VerticalLayout, impostando anch'esso con setSizeFull(). Vediamo un esempio:

Window subwindow = new Window("Titolo");
subwindow.setWidth("90%");
subwindow.setHeight("90%");
subwindow.setModal(true);


Embedded e = new Embedded("", new ExternalResource(url));
e.setType(Embedded.TYPE_BROWSER);
e.setSizeFull();


VerticalLayout layout = new VerticalLayout();
layout.setSizeFull();
layout.addComponent(e);
subwindow.setContent(layout); getWindow().addWindow(subwindow);
Problema risolto! Adesso il componente Embedded copre tutta l'area di subwindow :)

lunedì 21 maggio 2012

Notifiche desktop per Google Calendar

E' possibile abilitare le notifiche desktop per Google Calendar configurando in modo opportuno il browser Google Chrome, vediamo come:


  1. Verificare che Chrome abbia le notifiche desktop abilitate. Selezionare Strumenti-> Opzioni-> Roba da Smanettoni-> Impostazioni Contenuti
  2. Selezionare Notifiche ed assicurarsi che sia selezionata l’opzione "Chiedi quando un sito vuole mostrare le notifiche desktop (consigliato)" e che nelle eccezioni non sia presente Google Calendar
  3. Accedere al proprio account Calendar, cliccare sul link Impostazioni-> Impostazioni Calendar-> Labs
  4. Individuare e attivare i "Promemoria Discreti"
  5. Premere il pulsante "Salva", all'apparire della barra di richiesta acconsentire affinché Calendar possa inviare notifiche a Chrome
Adesso avremo le notifiche di Calendar sul desktop :)

sabato 5 maggio 2012

Problemi reinstallazione MySQL

Vi è mai capitato di ottenere questo fastidiosissimo messaggio di errore dopo la reinstallazione di MySQL?
can't connect to mysql server on 'localhost' (10061)
Dopo aver fatto un upgrade ad una versione successiva non riuscivo proprio a connettermi con nessun utente...

Bene, per risolvere questo problema basta semplicemente aggiungere questa riga al file di configurazione di MySQL my.ini o my.cnf
bind-address=0.0.0.0
In ogni caso, se provenite da una reinstallazione come nel mio caso, assicuratevi di aver seguito tutti i passi di questa procedura:
  • Se non lo avete già fatto, backuppare tutto dal vecchio MySQL prima di rimuoverlo, dati ed utenti, col comando mysqldump --routines --all-databases -uroot -ppassword > backup.sql
  • Disinstallare MySQL
  • Rimuovere la cartella dati, tipicamente su C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.5/Data/
  • Rimuovere la cartella di installazione di MySQL, tipicamente su C:/Program Files/MySQL

giovedì 3 maggio 2012

Path di webapps su Tomcat

Il path assoluto della web application, all'interno di una Servlet, è possibile ottenerlo nel seguente modo:
javax.servlet.ServletContext.getRealPath("/");
Se invece dobbiamo risalire al path assoluto da una classe che non sia una Servlet, possiamo farlo attraverso la variabile di sistema catalina.home, la quale identifica il path assoluto della root di Tomcat:
System.getProperty("catalina.home") + "/" + webapps;

Problema tabelle case sensitive in MySQL

Ho riscontrato un fastidioso problema nella sincronizzazione di database MySQL di sistemi diversi dovuto ai nomi delle tabelle, che su alcuni sistemi è case sensitive di default. Il problema in questione l'ho risolto modificando il file di configurazione di MySQL, che su Linux si trova su /etc/mysql/my.cnf, aggiungendo la seguente riga:
lower_case_table_names=1
468x60

Cerca su Google

Cerca nel Blog con Google