Jsf abas [RESOLVIDO]

alguem pode me dar um exemplo de como trabalhar com um tabPanel no jsf utilizando varios beans?

algo mais ou menos assim:

TAB1 | BEAN 1
TAB2 | BEAN 2
TAB3 | BEAN 3

e no ManageBean teria um BEAN GERAL que conteria o BEAN 1, BEAN 2, BEAN 3 dentro dele…

cara, vc tah a falar do tabPanel do RichFaces?

no trampo eu tenho uma pagina com 5 abas, e tipo a nao ser que cada aba tenha muuuito codigo( tipo um crud pra cada tab),
eu colocaria tudo em 1 bean soh, fica mais facil. Além de que normalmente a maioria das tabs só mostra tabelas, claro que existem os h:commandButtons em cada row, pra deletar e editar, mas a action deles normalmente é navegar pra outra pagina.

sobre um bean ter outros beans vc tem que configurar no faces-config.xml:

ex:


<managed-bean>
    <managed-bean-name>myBean1</managed-bean-name>
    <managed-bean-class>mypackage.MyBean1</managed-bean-class>
    <managed-bean-scope>application</managed-bean-scope>
</managed-bean>

<managed-bean>
    <managed-bean-name>myBean2</managed-bean-name>
    <managed-bean-class>mypackage.MyBean2</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
    <managed-property>
        <property-name>myBean1</property-name>
        <value>#{myBean1}</value>
    </managed-property>
</managed-bean>

e no codigo a el fica assim :

<h:outPutText value="#{beanPai.beanFilho1.algumValor}"

esse link me foi de GRANDE ajuda:


valeu

vitenho

to sim…

olha soh, meu backbean precisa ter escopo application mesmo? nao pode ser session?

e ele deve entrar como propriedade do meu filho?

nao cara, de jeito nenhum coloca o teu bean no application scope ( senao ele vai ser o mesmo pra todos os users)

eu soh copiei o exemplo daqele link q te passei ( burro eu kkkkk)

o codigo certo eh assim:



<managed-bean>
    <managed-bean-name>myBean1</managed-bean-name>
    <managed-bean-class>mypackage.MyBean1</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
</managed-bean>

<managed-bean>
    <managed-bean-name>myBean2</managed-bean-name>
    <managed-bean-class>mypackage.MyBean2</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    <managed-property>
        <property-name>myBean1</property-name>
        <value>#{myBean1}</value>
    </managed-property>
</managed-bean>

se o scope vai ser session ou request ai depende do que vc vai fazer nessa page.

cara eu realmente recomendo vc fazer tudo relativo a uma pagina num bean soh

eu uso essa injeção de beans quando por exemplo eu tenho algo assim:

class ProdutoCrudBean{

I18NBean translator;// bean que traduz msgs de erro
UserSessionBean userBean;// bean que fornece info sobre o user logado

public void addProduto(){

Produto p = new Produto();
p.setCriador(userBean.getCurrentUser());
// persiste;
translator.addMsg("saveok");
}

}

tipo beans que sao usados em quase todas as paginas (ex: tradução e auditoria)

valeu

ahh por isso te perguntei kkkk

mas de boa, já deu certo

vlw pelo help

coloca o titulo como RESOLVIDO?