MaterialPrime

MaterialPrime Con questo post vorrei presentarvi un progetto Java Server Faces: MaterialPrime. Come il nome può far intuire si tratta di una suite di componenti ispirati al MaterialDesign di Google basati su PrimeFaces che da qualche anno a questa parte è diventata uno standard de facto dei progetti JSF. All’indirizzo www.materialprime.com potete trovare lo showcase con i componenti fino ad...
Continue reading...

Form dinamiche con PrimeFaces

Form dinamiche con PrimeFaces Nell’ultimo post ho cercato di spiegare come ottenere delle datatable dinamiche con PrimeFaces e la Reflection. In questo nuovo articolo utilizzeremo la stessa tecnica per creare delle form di dettaglio dinamiche. Per fare ciò utilizzeremo il componente DynaForm del progetto PrimeFaces Extensions. Come potete vedere nei vari esempi presenti nello showcase, la DynaForm è utile quando abbiamo...
Continue reading...

Datatable dinamiche con PrimeFaces

In questo articolo ci occuperemo di come utilizzare la Reflection per estrarre dei modelli PrimeFaces dai nostri POJO. Nel caso specifico andremo a creare una dataTable dinamica utilizzando il componente p:columns. Setup Lavorare con la Reflection può rendere il codice abbastanza verboso e di difficile lettura. Fortunatamente esiste una libreria che ci aiuta tantissimo quando dobbiamo utilizzare questa tecnica. Il primo passo...
Continue reading...

Ajax e JSON con JSF2

JSF2 ha imparato molto dall’esperienza della versione precedente e dai framework che gli ruotavano attorno a tal punto da averne integrati alcuni. Un esempio è Facelets, ma sicuramente quella più utile è stata l’integrazione nativa con Ajax, prendendo spunto da Ajax4JSF (a4j), confluito in RichFaces da molti anni ormai. Una cosa però manca all’implementazione nativa di JSF2, ovvero l’attributo data...
Continue reading...

CDI ViewScoped: abbandoniamo i backing bean JSF!

Il ViewScoped in JSF 2 è molto usato e molto importante: ci permette di salvare lo stato di una vista per il solo arco di tempo in cui questa è attiva. Recentemente abbiamo confrontato il comportamento dei bean in questo scope rispetto a quelli in ConversationScoped introdotti dalla specifica CDI. Sarebbe bello quindi poter usare la potenza dei bean CDI con la semplicità della gestione del ViewScoped. Come? Esistono diverse vie....
Continue reading...

Injection o lookup programmatico? Aiutati che CDI t’aiuta

Siamo tutti un po’ innamorati della Dependancy Injection (DI), come quella di CDI per esempio: ci piace per l’estrema eleganza del codice, per il disaccoppiamento tra classi, per mille altre ragioni del mondo, e un po’ anche per pigrizia! Purtroppo però, esistono situazioni in cui l’idillio si infrange e la DI non viene risolta dal nostro Inversion of Control (IoC) container preferito: ci sono infatti alcuni artefatti come i Converter e i Validator di JSF che non sono gestiti da questi contesti, non meno lo è CDI. Urge un lookup programmatico! Vediamo come fare....
Continue reading...

ViewScoped vs ConversationScoped. JSF vs CDI. Chi vincerà?

Tra le novità della piattaforma Java EE 6, sicuramente spicca CDI. Spring e Seam hanno fatto scuola e il meglio entra nella specifica Java Enperprise. Uno dei primi concetti con cui dobbiamo fare i conti è il lifecycle dei bean CDI, governato dagli scopes. Già da subito si nota che molti di questi scope si sovrappongono a quelli della specifica JSF 2, e il fatto che i bean CDI siano referenziabili anche da pagine web tramite Expression Language (EL), fa pensare che CDI stia invadendo il campo di JSF. Cerchiamo di capire su cosa....
Continue reading...

JSF 2 e il versionamento delle risorse

In un post precedente abbiamo visto da vicino cosa significa “risorsa” per JSF 2, insieme alle convenzioni e gli strumenti necessari per gestirle. Una volta messo in piedi questo sistema, una domanda lecita è: ma come faccio a gestire il loro versionamento? Se modifico un css o uno script, come faccio ad essere sicuro che il browser dell’utente scarichi l’ultima versione e invalidi quella in cache? Rispondiamo a questa domanda in stile JSF 2!...
Continue reading...