Como desacoplar a view do Controller no JSF

Olá pessoal, atualmente estou trabalhando com JSF, e gostaria de saber como voces resolvem certos problemas como os listados abaixo:

Como voces fazem, quando por exemplo tenho atributos na view que não pertence as Entity por exemplo no caso de Usuario:

class Usuario 
private String login;
private String senha;

Ai teria um formulário para alteração de senha onde teria senhaAntiga e senhaNova, estes atributos nao fazem parte do dominio, somente na view, entao acaba tendo que sujar meu ManagedBean tipo:

public class FuncionarioController{
	private Funcionario funcionario;
        private String senhaAntiga;
        private String senhaNova;
}

Teria campos desnecesários apenas para ligar na minha pagina .xtml com value #{funcionarioBean.senhaAntiga}

Teria como passar isso por parametroes sem precisar atrelar ao meu ManagedBean?

E por que você iria querer fazer isso? :slight_smile:

Um managed bean deveria “espelhar” estritamente o necessário (dados e comportamentos) das tuas páginas. Se certos atributos, campos, dados etc não fazem parte diretamente do teu domain model (o que muitas vezes é algo normal) então utilize teu managed bean para gerenciar/manipular estes atributos.

Você não estaria sujando teu managed bean, muito pelo contrário, você estaria colocando os comportamentos e atributos no lugar correto.
Abraços e boa sorte.

Olá rafael, então depois que eu li esse artigo aqui, eu mudei mes conceitos;

Atulamente faço assim, exemplo para uma classe Funcionario.

Tenho FuncionarioView, onde coloco campos bindings, actionListener,etc
Tenho FuncionarioController, onde coloco actions
e tenho a EntityFuncionario

Ai no faces-config.xml eu declaro o FuncionarioView como managed-property do FuncionarioController, e por exempo quando quero export uma lista de funcionarios ´para view faço:

funcionarioView.setListaFuncionarios(lista_de_funcionarios_no banco);

Ai na page .xhtml, no richdataTable faço

<rich:dataTable value=#{funcionarioView.funcionarios}>

Desta forma, deixo meu ManagedBean que e o FuncionarioController, limpo somente com action, e tudo que eh da view, esta em FuncionarioView.

Existe algum problema nesta abordagem?

Obrigado!