Reaproveitamento de componentes JSF

Bom dia!
Estou desenvolvento uma aplicacao em JSF (utilizando PrimeFaces). Gostaria de saber se é possível e como começar( não encontrei muito material a respeito) a reaproveitar componentes… Por exemplo, criar um <p:autocomplete que busca um objeto cidade pelo nome. e usar o mesmo componente tanto no cadastro de cidade como no cadastro de cliente mudando apenas o ManagedBean que vai trabalhar com ele, evitando assim ctrl+c e ctrl+v.

Atenciosamente.

Qual o problema de se fazer <p:autocomplete value="#{pessoaMB.pessoa}" e em outra tela fazer <p:autocomplete value="#{cidadeMB.cidade}"?
Não vejo oq haveria de má prática aí.

Certo, mas eu preciso deixa a chamada do metodo de autocomplete, por exemplo:

	<p:autoComplete id="nomecidade"     value="#{cidadeBean.obCidade}" var="cidade" itemLabel="#{cidade.nome}" itemValue="#{cidade}" converter="cidadeConverter"  minQueryLength="3" effect="fade"  completeMethod="#{cidadeBean.completeNome}">

o que eu penso é deixar esse componente prontinho. pra quando usar em outro facelet, mudar apenas o value="#{cidadeBean.obCidade}" para value="#{ClienteBean.obCidade}". Esse é um exemplo simples. Digamos que amanha eu quero trocar o effect de fade pra explode.
Eu teria que sair alterando em todo lugar que usei ele?

Você poderia criar um MB só com as configurações e passar via EL: <p:autoComplete effect="#{configMB.effectAutoComplete}" e esse MB iria no DB ou no arquivo de configuração procurar o valor correto. Seu MB poderia ser do tipo @ApplicationScoped que deixaria apenas uma instância para todo o JSF. [=

Caso o componente não aceite valor em Runtime aí você terá que criar um componente que extenda o autoComplete e configurar isso ao seu modo.

No livro http://www.amazon.com/Core-JavaServer-Faces-Edition-ebook/dp/B003TJ9MH6/ref=sr_1_4?s=digital-text&ie=UTF8&qid=1333472842&sr=1-4 ele explica como montar/criar componentes de um modo simples. Gostei bastante.

No seu caso você poderia utilizar o autoComplete, extendê-lo e alterar apenas o necessário.

Facelets te deixa fazer isso, dá uma olhada em composite components…

jakefrog

Vlw pela dica do livro. é bem por ai mesmo que precisava.
Vou dar uma olhada como criar os componentes extendidos.

Att;

verdade, componente facelets, fácil de fazer e resolve seu problema