Mokabyte

Dal 1996, architetture, metodologie, sviluppo software

  • Argomenti
    • Programmazione & Linguaggi
      • Java
      • DataBase & elaborazione dei dati
      • Frameworks & Tools
      • Processi di sviluppo
    • Architetture dei sistemi
      • Sicurezza informatica
      • DevOps
    • Project Management
      • Organizzazione aziendale
      • HR
      • Soft skills
    • Lean/Agile
      • Scrum
      • Teoria della complessità
      • Apprendimento & Serious Gaming
    • Internet & Digital
      • Cultura & Società
      • Conferenze & Reportage
      • Marketing & eCommerce
    • Hardware & Tecnologia
      • Intelligenza artificiale
      • UX design & Grafica
  • Ultimo numero
  • Archivio
    • Archivio dal 2006 ad oggi
    • Il primo sito web – 1996-2005
  • Chi siamo
  • Ventennale
  • Libri
  • Contatti
  • Argomenti
    • Programmazione & Linguaggi
      • Java
      • DataBase & elaborazione dei dati
      • Frameworks & Tools
      • Processi di sviluppo
    • Architetture dei sistemi
      • Sicurezza informatica
      • DevOps
    • Project Management
      • Organizzazione aziendale
      • HR
      • Soft skills
    • Lean/Agile
      • Scrum
      • Teoria della complessità
      • Apprendimento & Serious Gaming
    • Internet & Digital
      • Cultura & Società
      • Conferenze & Reportage
      • Marketing & eCommerce
    • Hardware & Tecnologia
      • Intelligenza artificiale
      • UX design & Grafica
  • Ultimo numero
  • Archivio
    • Archivio dal 2006 ad oggi
    • Il primo sito web – 1996-2005
  • Chi siamo
  • Ventennale
  • Libri
  • Contatti

Nel numero:

147 gennaio
, anno 2010

Introduzione a Wicket Web Beans

II parte: Personalizzare le applicazioni

Guglielmo Iozzia
Guglielmo Iozzia

Guglielmo Iozzia si è Laureato nel 1999 in Ingegneria Elettronica (indirizzo Biomedico) presso l‘Università di Bologna. Ha progettato e realizzato un software diagnostico per la predizione dell‘andamento della pressione intracranica in pazienti in terapia intensiva neurochirurgica. Frequenta il mondo Java dall‘inizio del 2000. Dopo numerose esperienze presso un‘azienda di Bologna del settore IT (fino all‘aprile del 2006), e per qualche mese in una analoga società di Roma, ha scelto la libera professione, lavorando per RAI Net fino ai primi mesi del 2008. In seguito è diventato Senior IT Consultant per la FAO (Food and Agriculture Organization of the United Nations). In ambito FAO ha dedicato quasi tutto il 2012 al progetto GRMS (Global Resources Management System) in qualità di "Web Services and cross-environmental integration specialist". Da luglio 2013 si è trasferito a Dublino, dove ricopre il ruolo di SVT Automation Engineer per IBM Ireland.

MokaByte

Introduzione a Wicket Web Beans

II parte: Personalizzare le applicazioni

Picture of Guglielmo Iozzia

Guglielmo Iozzia

  • Questo articolo parla di: Frameworks & Tools, Programmazione & Linguaggi

Secondo articolo su Wicket Web Beans, un toolkit che combina insieme le potenzialità del framework Wicket con quelle dei Java Web Beans. In questa seconda parte vengono descritti diversi modi con cui è possibile personalizzare le applicazioni basate su questo framework.

Proseguiamo nella presentazione del framework Wicket Web Beans. Per la comprensione del presente articolo valgono le raccomandazioni fatte nel precedente [9] riguardo le conoscenze e le letture preliminari. La versione di Wicket Web Beans a cui faremo riferimento è sempre la 1.1.

Customizzazione

Come abbiamo visto nell’articolo precedente, Wicket Web Beans (WWB) ordina per default i campi in una pagina in base al nome della property che li rappresenta e li posiziona in una griglia di tre colonne. È possibile cambiare questo modo di ordinare i campi personalizzando i WWB Metadata di un Bean. La customizzazione può essere eseguita tramite uno dei seguenti strumenti:

  • Wicket .properties file;
  • Beanprops property file: è simile a un .properties file di un component Wicket, ma specifico per i bean;
  • WWB annotations;
  • WWB metadata API;
  • JDO [10] o JPA [11] @Column annotations.

È anche possibile combinare l’utilizzo di più di uno di questi strumenti. Non esiste una regola generale per utilizzarne uno rispetto agli altri: la scelta dipende sempre dal caso specifico che si sta trattando. Per quanto riguarda poi il solo look and feel è sempre possibile personalizzare le pagine tramite CSS.

Wicket properties files in WWB

Come accennato al paragrafo precedente, anche in WWB è possibile utilizzare i file .properties di Wicket. Sono dei file contenenti delle coppie chiave-valore del tutto simili a quelli che vengono utilizzati per configurare la stragrande maggioranza delle applicazioni Java. Riprendendo il Bean (TestBean) di esempio dell’articolo precedente [9], nel caso in cui vogliamo evitare che per i due field operand1 e operand2 vengano generate le label di default “Operand 1” e “Operand 2”, bisogna scrivere il file SimpleBeanPage.properties il quale deve contenere le seguenti due righe:

operand1.label=First Value
operand2.label=Second Value

In questo modo l’override dei valori di default delle label verrà fatto per tutti i bean che definiscono due proprietà con quei nomi. È possibile restringere l’override solo a TestBean indicando il nome della classe prima della proprietà all’interno dei .properties file:

TestBean.operand1.label=First Value
TestBean.operand2.label=Second Value

Personalizzazione tramite beanprops files

Un beanprops file deve avere lo stesso nome della Page (o del component) a cui si riferisce. Supponiamo di avere la seguente pagina di esempio

public class CustomSimpleBeanPage extends WebPage
{
    public CustomSimpleBeanPage()
    {
        TestBean bean = new TestBean();
        BeanMetaData meta = new BeanMetaData(bean.getClass(), null, this, null, false);
        add( new BeanForm("beanForm", bean, meta) );
    }
}

e di volerla personalizzare disponendo su un’unica colonna i field di TestBean e secondo un ordine diverso da quello alfabetico crescente di default. Il contenuto del beanprops file specifico (CustomSimpleBeanPage.beanprops) sarà il seguente:

# Customize TestBean.
TestBean {
    cols: 1;
    props: firstName, lastName, operand1, operand2, result, -number;
}

Il segno meno davanti alla proprietà number sta ad indicare che non vogliamo visualizzarla. Il layout della Page è quello mostrato in figura 1.

 

 

 Figura 1 – La pagina di esempio dopo la personalizzazione tramite beanprops file.

All’interno del file abbiamo indicato il Bean con il solo nome della sua classe. Il nome del package è opzionale. Se però l’applicazione ha due bean classes con lo stesso nome, ma appartenenti a package diversi, bisogna indicare il nome completo per essere sicuri che WWB faccia riferimento a quella corretta.

WWB consente l’utilizzo di resource anche all’interno di beanprops file. È possibile quindi fare una cosa del genere:

# Customize TestBean.
TestBean {
    cols: 1;
    props:
        firstName, lastName,
        operand1{ label: "This is ${propertyKey} Value" },
        operand2,
        result, -number;
}

In questo modo abbiamo indicato che la label della proprietà operand1 è costituita da una parte fissa e da una parte variabile in base al valore di una proprietà propertyKey presente in un file .properties applicativo.

Per default, i field dei Bean in una pagina sono editabili. Per rendere un field non editabile bisogna impostare la variabile viewOnly a true. Esempio:

# Customize TestBean.
TestBean {
    cols: 1;
    props:
        firstName,
        lastName{ label: "Last Name (informational)"; viewOnly: true },
        operand1,
        operand2,
        result, -number;
}

Tramite i .beanprops file è possibile personalizzare anche le action. Riprendendo in esame l’esempio dello scorso articolo e supponendo di voler visualizzare il button relativo alla action clearLastName, il beanprops file diventa:

# Actions Example
TestBean {
    props: firstName, lastName, action.clearLastName,
        operand1, operand2, result, -number;
}

Le action vanno sempre prefissate con action.

Tramite beanprops file è inoltre possibile specificare dei parametri per le action. Esempio:

# Actions Example
TestBean {
    actions: save{ ajax: true };
    props: firstName, lastName, action.clearLastName,
        operand1, operand2, result, -number;
}

In questo modo forziamo l’invocazione del button associato alla action save tramite Ajax (il parametro di tipo org.apache.wicket.ajax.AjaxRequestTarget in ingresso alla action non è più null).

Così come per i field, anche per le action è possibile rimuoverle prefissandole con un meno.

WWB annotations

In alternativa ai beanprops file è possibile usare le annotations di WWB per personalizzare una applicazione. Il ricorso alle annotations non esclude i beanprops e viceversa: è sempre possibile combinare le due cose. WWB mette a disposizione le seguenti annotations:

  • @Beans: usata a livello di classe per contenere più di una @Bean annotation. È equivalente a un beanprops file che contiene più di un Bean.
  • @Bean: usata a livello di classe per descrivere un singolo Bean.
  • @Action: usata per personalizzare una action.
  • @Property: usata per personalizzare sia una proprietà che un property method (sia getter che setter) di un Bean.
  • @Tab: usata per personalizzare un Bean.tabs. La descrizione dei tabs verrà fatta nel prossimo articolo di questa serie.
  • @Parameter: usata insieme a @Bean, @Action, @Property, @Tab per impostare parametri non standard.

All’interno del codice di una applicazione è possibile aggiungere annotations alle Page, ai Bean o a classi Metadata implementate appositamente dallo sviluppatore.

WWB Metadata API

WWB fornisce anche delle API Java che hanno le stesse funzionalità delle annotations. È più utile ricorrere a queste API nei casi in cui si necessita di impostare la configurazione dei matadati in maniera condizionale. È possibile combinare l’utilizzo di queste API con le annotations e con i beanprops files. Le WWB Java API comprendono:

  • JBeans: contenitore di uno o più Bean.
  • JBean: descrittore di un Bean. Può sostituire JBeans nel caso in cui si abbia un solo Bean.
  • JAction: usata per personalizzare le action.
  • JProperty: usata per personalizzare le proprietà di Bean e Tab.
  • JTab: usata per personalizate i tabs.
  • JParameter: usata per impostare parametri non standard di JBean, JAction, JProperty e JTab.

Conclusioni

In questo secondo articolo sono stati descritti i vari modi (basati sia su funzionalità Wicket che soprattutto su specifiche Web Beans) con cui è possibile personalizzare una applicazione WWB based e darle comportamenti diversi da quelli di default. Nel prossimo e ultimo articolo verranno dettagliatamente descritti altri importanti WWB components quali i tabs e le tables.

Riferimenti

[1] Karthik Gurumurthy, “Pro Wicket”, Apress, 2006

[2] Guglielmo Iozzia, serie di articoli su Wicket framework pubblicati su Mokabyte a partire da

https://www.mokabyte.it/cms/article.run?articleId=XIU-464-LXV-CM2_7f000001_11994537_f9c9053a

[3] Guglielmo Iozzia, serie di articoli su Web Beans pubblicati su Mokabyte a partire da

https://www.mokabyte.it/cms/article.run?articleId=2U2-E3P-NNC-6VT_7f000001_10911033_0a4a63e2

[4] Specifiche Sun JavaBeans

http://java.sun.com/javase/technologies/desktop/javabeans/docs/spec.html

[5] Sito ufficiale di Wicket Web Beans presso Google

http://code.google.com/p/wicket-web-beans/

[6] Wicket Web Beans SVN repository

http://wicket-web-beans.googlecode.com/svn/trunk/

[7] Apache Maven 2

http://maven.apache.org/

[8] Apache Common BeanUtils

http://commons.apache.org/beanutils/

[9] Guglielmo Iozzia, primo articolo su Wicket Web Beans su Mokabyte

https://www.mokabyte.it/cms/article.run?articleId=DSB-E31-MQS-CYC_7f000001_18359738_ef2466ca

[10] Java Data Objects (JDO)

http://java.sun.com/jdo/

[11] Java Persitence API (JPA)

http://java.sun.com/developer/technicalArticles/J2EE/jpa/

 

 

 

Guglielmo Iozzia
Guglielmo Iozzia

Guglielmo Iozzia si è Laureato nel 1999 in Ingegneria Elettronica (indirizzo Biomedico) presso l‘Università di Bologna. Ha progettato e realizzato un software diagnostico per la predizione dell‘andamento della pressione intracranica in pazienti in terapia intensiva neurochirurgica. Frequenta il mondo Java dall‘inizio del 2000. Dopo numerose esperienze presso un‘azienda di Bologna del settore IT (fino all‘aprile del 2006), e per qualche mese in una analoga società di Roma, ha scelto la libera professione, lavorando per RAI Net fino ai primi mesi del 2008. In seguito è diventato Senior IT Consultant per la FAO (Food and Agriculture Organization of the United Nations). In ambito FAO ha dedicato quasi tutto il 2012 al progetto GRMS (Global Resources Management System) in qualità di "Web Services and cross-environmental integration specialist". Da luglio 2013 si è trasferito a Dublino, dove ricopre il ruolo di SVT Automation Engineer per IBM Ireland.

Facebook
Twitter
LinkedIn
Picture of Guglielmo Iozzia

Guglielmo Iozzia

Guglielmo Iozzia si è Laureato nel 1999 in Ingegneria Elettronica (indirizzo Biomedico) presso l‘Università di Bologna. Ha progettato e realizzato un software diagnostico per la predizione dell‘andamento della pressione intracranica in pazienti in terapia intensiva neurochirurgica. Frequenta il mondo Java dall‘inizio del 2000. Dopo numerose esperienze presso un‘azienda di Bologna del settore IT (fino all‘aprile del 2006), e per qualche mese in una analoga società di Roma, ha scelto la libera professione, lavorando per RAI Net fino ai primi mesi del 2008. In seguito è diventato Senior IT Consultant per la FAO (Food and Agriculture Organization of the United Nations). In ambito FAO ha dedicato quasi tutto il 2012 al progetto GRMS (Global Resources Management System) in qualità di "Web Services and cross-environmental integration specialist". Da luglio 2013 si è trasferito a Dublino, dove ricopre il ruolo di SVT Automation Engineer per IBM Ireland.
Tutti gli articoli
Nello stesso numero
Loading...

Semantic Web. Esplorazione/visualizzazione di ontologie

IV parte: Visualizzazione di informazioni tramite GWT

GraniteDS: Flex incontra Java

I parte: Oltre BlazeDS

Realizziamo un Web Service con Spring-WS

I parte: Approccio allo sviluppo e primi passi

Search Engine Optimization

II parte: Aumentare la popolarità di un sito internet

ICEFaces, un framework Ajax open source

II parte: Sviluppiamo un piccolo sito Web 2.0

Nella stessa serie
Loading...

Introduzione a Wicket Web Beans

III parte: Altri strumenti importanti

Introduzione a Wicket Web Beans

I parte: Caratteristiche principali

Open Web Beans

L‘implementazione Apache della specifica Sun JSR-299

Web Beans

V parte: La gestione degli eventi

Web Beans

IV parte: Il ciclo di vita di un Web Bean

Web Beans

III parte: Deployment types e stereotipi

Web Beans

II parte: L‘importanza degli scope

Web Beans

I parte: Introduzione e specifiche

Mokabyte

MokaByte è una rivista online nata nel 1996, dedicata alla comunità degli sviluppatori java.
La rivista tratta di vari argomenti, tra cui architetture enterprise e integrazione, metodologie di sviluppo lean/agile e aspetti sociali e culturali del web.

Imola Informatica

MokaByte è un marchio registrato da:
Imola Informatica S.P.A.
Via Selice 66/a 40026 Imola (BO)
C.F. e Iscriz. Registro imprese BO 03351570373
P.I. 00614381200
Cap. Soc. euro 100.000,00 i.v.

Privacy | Cookie Policy

Contatti

Contattaci tramite la nostra pagina contatti, oppure scrivendo a redazione@mokabyte.it

Seguici sui social

Facebook Linkedin Rss
Imola Informatica
Mokabyte