Spero che in questo post posso ottenere le opinioni delle persone sulle migliori pratiche per l'interfaccia tra le pagine JSF e i backing bean.
Una cosa su cui non riesco mai a stabilirmi è la struttura dei miei fagioli di sostegno. Inoltre, non ho mai trovato un buon articolo sull'argomento.
Quali proprietà appartengono a quali fagioli di supporto? Quando è appropriato aggiungere più proprietà a un dato bean invece di creare un nuovo bean e aggiungervi le proprietà? Per applicazioni semplici, ha senso avere un solo backing bean per l'intera pagina, considerata la complessità legata all'iniezione di un bean in un altro? Il backing bean dovrebbe contenere una logica di business effettiva o contenere rigorosamente dati?
Sentiti libero di rispondere a queste e ad altre domande che potrebbero sorgere.
Per quanto riguarda la riduzione dell'accoppiamento tra la pagina JSF e il backing bean, non permetto mai alla pagina JSF di accedere alle proprietà del backing bean. Ad esempio, non permetto mai qualcosa come:
<h:outputText value="#{myBean.anObject.anObjectProperty}" />
Ho sempre bisogno di qualcosa come:
<h:outputText value="#{myBean.theObjectProperty}" />
con un valore del fagiolo di supporto di:
public String getTheObjectProperty()
{
return anObject.getAnObjectProperty();
}
Quando eseguo il ciclo su una raccolta, utilizzo una classe wrapper per evitare di eseguire il drill-down in un oggetto in una tabella di dati, ad esempio.
In generale, questo approccio mi sembra "giusto". Evita qualsiasi accoppiamento tra la vista e i dati. Per favore correggimi se sbaglio.