[rd_jsfsquad] Bemerkingen extval-poc

  • From: Rudy De Busscher <rdebusscher@xxxxxxxxx>
  • To: rd_jsfsquad <rd_jsfsquad@xxxxxxxxxxxxx>
  • Date: Sat, 6 Feb 2010 15:02:39 +0100

Steve,

Ik heb de laatste week heel weinig tijd gehad, maar ben toch eens diagonaal
door je code gelopen.  Hieronder heb ik een lijstje gemaakt van enkele
belangrijke punten. Dit zijn geen absolute waarheden maar kunnen je
problemen besparen of zijn geinspireerd op enkele best practices.
Als er vragen hierover zijn, laat maar horen.

Zal over een tweetal weken nog eens proberen de code te overlopen.

groeten
Rudy.

-Je hebt 2 logging frameworks, probeer commons logging overboord te gooien.
(Ik zet het al bij de Questions voor volgende vergadering, over het hoe en
waarom)

*MessageUtils*
- Dit is een Myfaces specifieke klasse dus kan je niet switchen naar
Mojarra.
- Hierdoor moest je de resource bundle ook tweemaal specifieren, eenmaal in
faces-config en eenmal in de Constants klasse.
==> gebruik dus liever iets wat gebaseerd is op een EL expressie.

*UserBean*
- Is op sessie en is goed om user authenticatie data bij te houden.  Maar
bevat ook data welke eigenlijk op applicatie niveau (de predefined users)
horen.
Het is daarom beter een andere backing bean te maken, op scope application,
welke de users bijhoud maar ook zal bepalen of username en paswoord correct
zijn. Deze kan dan in de userBean geinjecteerd worden.
- de methode authenticate is een action methode.  Deze dient in principe
enkel om de navigatie te bepalen, niet de logica welke uitgevoerd moet
worden bij een klik.  Dit moet in principe in de actionListener.
- Je hebt een navigatie constante gedefinieerd om op de pagina zelf te
blijven, return van null is voldoende en deze moet niet in
faces-config-navigation gespecifieerd worden.

*xxx.jsf*
- Wanneer je een lege cel wenst aan te maken in een panelgrid volstaat
<f:verbatim/> op de plaats en is <panelGroup> niet nodig.
- In je link naar de CSS gebruik je de root, als er een war gemaakt wordt en
deze app wordt onder een andere root gedeployed dan wordt de CSS niet
gevonden. gebruik altijd relatieve paden.

Het is beter dat je de action methoden en actionListeners voor een pagina
bij de bean houdt waarin de data staan.  Dus de personBean niet gebruiken
voor personList.jsp

PersonListBean moet inderdaad op session staan om de sortering van de tabel
mogelijk te maken. -> Jan dit is iets voor je Conversation scope in CDI.

*PersonBean*
- Dit kan je op request niveau plaatsen (zo veel mogelijk op request). Je
hebt dan wel een probleempje op te lossen omdat PersonBean niet in
PersonListBean kan geinjecteerd worden maar daarvoor bestaat er een
oplossing (weeral via EL)

**

Other related posts: