Espero que neste post eu possa obter a opinião das pessoas sobre as melhores práticas para a interface entre as páginas JSF e os beans de apoio.
Uma coisa que nunca consigo definir é a estrutura dos meus grãos de apoio. Além disso, nunca encontrei um bom artigo sobre o assunto.
Quais propriedades pertencem a quais grãos de apoio? Quando é apropriado adicionar mais propriedades a um determinado bean em vez de criar um novo bean e adicionar as propriedades a ele? Para aplicativos simples, faz sentido ter apenas um único bean de apoio para a página inteira, considerando a complexidade envolvida em injetar um bean em outro? O bean de apoio deve conter qualquer lógica de negócios real ou deve conter estritamente dados?
Sinta-se à vontade para responder a essas perguntas e a quaisquer outras que possam surgir.
Quanto à redução do acoplamento entre a página JSF e o backing bean, nunca permito que a página JSF acesse as propriedades de qualquer propriedade do backing bean. Por exemplo, nunca permito algo como:
<h:outputText value="#{myBean.anObject.anObjectProperty}" />
Sempre exijo algo como:
<h:outputText value="#{myBean.theObjectProperty}" />
com um valor de bean de apoio de:
public String getTheObjectProperty()
{
return anObject.getAnObjectProperty();
}
Quando faço um loop em uma coleção, uso uma classe wrapper para evitar o detalhamento de um objeto em uma tabela de dados, por exemplo.
Em geral, essa abordagem parece "certa" para mim. Isso evita qualquer acoplamento entre a exibição e os dados. Por favor me corrija se eu estiver errado.