468x60

martedì 31 gennaio 2012

Colore sfondo ContentPanel in ExtGWT

La documentazione presente per ExtGWT scarseggia, per capire come cambiare il colore dello sfondo di un ContentPanel c'è voluto mezz'ora, anche a causa di post che si contraddicevano...

Ad ogni modo, ecco come impostare il colore dello sfondo del ContentPanel:
panel.setBodyStyle("backgroundColor: #colore_qui;");

sabato 28 gennaio 2012

Compressione contenuti Vaadin

Di solito è una buona cosa comprimere con gzip tutto il traffico http in chiaro di Vaadin, per la velocità e in modo da minimizzare la quantità di dati trasferiti. Per farlo bisogna configurare il server, ed è un concetto applicabile in generale e non solo per Vaadin.

Quando la compressione gzip è abilitata, il server comprime i dati inviati al browser, spesso con conseguente riduzione notevole della dimensione dei dati trasferiti e quindi del tempo di download.

Non vogliamo comprimere roba che è già molto compressa, come ad esempio i file JPEG, perciò dobbiamo fare in modo che il server conosca quali mime-type vogliamo comprimere. Di solito il server è preconfigurato per comprimere alcuni tipi noti, come HTML e CSS, ma un mime-type che di solito manca è quello utilizzato per la comunicazione JSON che utilizza Vaadin, cioè application/json.

Vediamo come configurare Tomcat

In Tomcat, è necessario configurare il connettore per avere compression="on" ed impostare compressableMimeType con l'appropriato mime-type (il default di Tomcat 7 è "text/html, text/xml, text/plain", ed effettivamente manca application/json). Inoltre, è possibile impostare il compressionMinSize per soddisfare le raccomandazioni di Google. E' possibile farlo nel file server.xml:

<Connector port="8080"
   …OTHER STUFF...
   compression="on"
   compressionMinSize="500"
   compressableMimeType="text/html,text/xml,text/plain,application/javascript,application/json"/>

Buon utilizzo!

giovedì 26 gennaio 2012

Escape SQL strings in Java

Capita spesso di dover elaborare stringhe di testo per eliminare i caratteri speciali. Per questo scopo possiamo avvalerci della classe StringEscapeUtils di Apache Commons.

Ecco un esempio:
import org.apache.commons.lang.StringEscapeUtils;

public class StringUtilsEscapeExampleV1 {

  public static void main(String args[]) {
    String unescapedJava = "Are you for real?";
    System.err.println(
      StringEscapeUtils.escapeJava(unescapedJava));

    String unescapedJavaScript = "What's in a name?";
    System.err.println(
      StringEscapeUtils.escapeJavaScript(unescapedJavaScript));

    String unescapedSql = "Mc'Williams";
    System.err.println(
      StringEscapeUtils.escapeSql(unescapedSql));

    String unescapedXML = "";
    System.err.println(
      StringEscapeUtils.escapeXml(unescapedXML));

    String unescapedHTML = "";
    System.err.println(
      StringEscapeUtils.escapeHtml(unescapedHTML));

  }
}
Oppure, nei casi più semplici, possiamo usare un semplice replaceAll() che sostituisce tutte le occorrenze di un dato carattere. Ad esempio, quando si lavora con stringhe SQL, causano problemi i singoli apici ( ' ), che è possibile rimpiazzare semplicemente con stringa.replaceAll("'", "''")

mercoledì 25 gennaio 2012

Aggiungere elementi ad una Table in Vaadin

Vediamo come aggiungere elementi ad una Table in Vaadin

Innanzitutto bisogna definire i campi della tabella:
table.addContainerProperty("field1", String.class, null);
table.addContainerProperty("field2", Integer.class, null);

Poi, per aggiungere elementi alla tabella, possiamo specificarne il numero di riga:
table.addItem(new Object[] { field1TextField.getValue(), field2TextField.getValue(), new Integer(1));
table.addItem(new Object[] { field1TextField.getValue(), field2TextField.getValue(), new Integer(2));

oppure impostare null come numero di riga, in questo modo verrà effettuato un append a fine tabella:
table.addItem(new Object[] { field1TextField.getValue(), field2TextField.getValue(), null);

mercoledì 18 gennaio 2012

Modifica titolo pagina "Categorie" in Virtuemart

Per modificare il titolo della pagina "Categorie" di Virtuemart bisogna modificare il file /administrator/components/com_virtuemart/languages/common/italian.php

lunedì 9 gennaio 2012

Vaadin Table getValue vs getItem



In Vaadin ci sono due modi per ottenere informazioni da una riga selezionata su una tabella al suo click:

Metodo1
table.addListener(new ItemClickListener () {
@Override
public void itemClick(ItemClickEvent event) {
Item item = table.getItem(event.getItemId());
Object myObjectProperty = item.getItemProperty("myProperty").getValue();
}
});

Metodo2
table.addListener(new ItemClickListener () {
@Override
public void itemClick(ItemClickEvent event) {
Object rowId = table.getValue();
Object myObjectProperty =  table.getContainerProperty(rowId, "myProperty").getValue();
}
});

Alcune volte il metodo2 mi ha dato problemi, restituendo null come rowId.


giovedì 5 gennaio 2012

Vaadin Checkbox Listener

Utilizzando il componente Checkbox di Vaadin ho avuto qualche problema con i listener quando il componente Checkbox lo utilizzavo anche come campo di una tabella.

Ho dovuto sostituire il listener:


checkbox.addListener(new Property.ValueChangeListener() {
   public void valueChange(ValueChangeEvent event) {
    //esegui codice
   }
});


con il listerer:


checkbox.addListener(new ClickListener() {

@Override
public void buttonClick(ClickEvent event) {
boolean enabled = event.getButton().booleanValue();
if(enabled) {
//esegui codice
} else {
//esegui codice
}
}
});


468x60

Cerca su Google

Cerca nel Blog con Google