JSF 2.0 + Ajax: Botão com link para a mesma página e renderizar formulários? [Iniciante]

Pessoal, estou com 2 dúvidas sobre Ajax, mas não encontro nada parecido com isso no GUJ nem na net.

1) Como fazer link (em formato de botão) para a mesma página?
Tenho uma página index.xhtml com 4 forms. No primeiro (formprincipal) há 3 botões que, quando clicados, quero direcionar suas ações para seus respectivos forms (form1 / form2 / form3) na mesma página index.xhtml.

Em JSF, se eu tiver um botão “Página 2” e uma “pagina2.xhtml”, ele abre uma nova página (pagina2.xhtml - claro que ela deve existir). Algo do tipo:

Não quero abrir uma página2.xhtml, mas sim direcionar a action para o form2 na mesma página index.xhtml (quando clicar o botão “Página 2”). Como se faz isso usando Ajax?

<h:commandButton value="Form 2" action="form2"> <f:ajax ???????> <h:commandButton/>

2) Quando clicar sobre o botão “Confirmar” no form3, desejo renderizar o form3a. Como faço isso com Ajax?

Supondo as ações:

  • Em formprincipal, clico sobre o botão “Página 3”;
  • Sou “redirecionado” para o form3, na mesma página index.xhtml;
  • Faço algo nesse form3 e clico no botão “Confirmar”;
  • Renderizo o form3a, que está na mesma página (é claro).

Ou seja: eu tenho de [A]passar os IDs de todos os itens do form3a ou [b]passar apenas o ID do form3a?

[A] Assim?

<h:form id="form3"> <h:commandButton value="Página 3" action="pagina3"> <f:ajax event="action" render="form3a"/> <h:commandButton/> </h:form>

<h:form id="form3a"> <h:outputText id="campo1"... ... /> <h:outputText id="campo2"... ... /> <h:outputText id="campo3"... ... /> </h:form>
[b] Ou assim?

<h:form id="form3"> <h:commandButton value="Página 3" action="pagina3"> <f:ajax event="action" render="campo1 campo2 campo3 ... ... "/> <h:commandButton/> </h:form>

<h:form id="form3a"> <h:outputText id="campo1"... ... /> <h:outputText id="campo2"... ... /> <h:outputText id="campo3"... ... /> </h:form>
Muito obrigado pessoal!

Poxa pessoal, ninguém? :frowning:

Já tentou:

<f:ajax execute="@form" event="onclick" render="idDoSeuFormOuPanel"/>

esse @form está informando o que será enviado na requisição para o servidor, no seu caso um Form e no render vc passa o id do seu form!