criar campos e botoes validos.h:commandButton, aqui que esta o pulo do gato! Este comando e similar ao botao SUBMIT do HTML, e funciona da mesma maneira, ele pega todos os campos do formulario e envia para algum lugar.Vamos ver com um pouco de calma cada propriedade deste comando.action=cadastro, mas o que e isso? cadastro, essa porcaria nao e sequer uma pagina!Realmente isto nao e uma pagina, nao e nada, cadastro nao existe!Essa string e outro apelido, que definiremos no arquivo de configuracao, quando informamos para a pagina, ao clicar neste botao vai para cadastro ela procura esse tal de cadastro no arquivo faces-config.xml, e este se encarrega de informar qual pagina deve ser invocada.A propriedade value e a mesma dos botoes SUBMIT do HTML, aqui sera inserida a informacao que ficara escrita no botao, neste caso estamos procurando alguma informacao no arquivo properties.Com isso encerramos as explicacoes desta pagina!Agora abra o arquivo inicio.jsp e insira as seguintes linhas de codigo:<%@ taglib uri=http://java.sun.com/jsf/html prefix=h %><%@ taglib uri=http://java.sun.com/jsf/core prefix=f %><f:loadBundle basename=br.com.projetox.view.bundle.messages var=msg/><html><head></head><body><f:view><h1><h:outputText value=#{msg.pagina_cadastro_label_titulo}/></h1><h3><h:outputText value=#{msg.pagina_cadastro_label_site}/></h3><h:form id=helloForm><h:outputText value=#{msg.pagina_cadastro_label_nome}/><h:inputText value=#{teste.nome} /><f:verbatim><br></f:verbatim><h:outputText value=#{msg.pagina_cadastro_label_email}/><h:inputText value=#{teste.email} /><f:verbatim><br></f:verbatim><h:commandButton action=#{teste.testar} value=#{msg.pagina_principal_botao_ok} /></h:form></f:view></body></html>Nesta pagina, praticamente todos os comandos sao similares aos da pagina anterior, com execao de tres que merecem uma explicacao melhor:<h:inputText value=#{teste.nome} />Aqui estamos criando um inputText, que como voce deve estar imaginando e uma caixa de texto, igual ao do HTML, mas o que precisa de uma explicacao especial nesta tag e o value. Note que estamos informando #{teste.nome}, fazendo isso estamos falando que este campo esta vinculado a variavel nome da classe teste. Ainda nao sabemos quem e esse teste, por que nao configuramos o faces-config.xml ainda, porem este e o nosso bean, a classe testeBean.java, lembra que criamos uma variavel private String nome la? Entao, e aqui que ela esta sendo referenciada. Se a variavel possuir algum valor, a pagina vai mostrar este valor no campo quando a pagina for carregada, e se o usuario digitar alguma coisa no campo, o valor do campo sera copiado para a variavel nome quando for clicado no botao de submit (o commandButton). Entao podemos imaginar, para efeito de analogia, que este campo e a propria variavel da classe testeBean! Certo, certo, nao sao a mesma coisa, mas uma esta vinculada diretamente com a outra, sao irmas gemeas, e siamesas ainda por cima, o valor que uma possuir a outra vai copiar, tanto pra ir quando pra vir.Um pouco mais abaixo temos a tag <f:verbatim><br></f:verbatim>, esta tag DEVE ser criada sempre que desejar inserir algum comando HTML puro na pagina, nunca se deve utilizar tags HTML em paginas JSF, nunca! Mas, eu estou utilizando alguns comandos HTML diretamente, e ai? Bem, eu posso explicar, este projeto e algo extremamente simples, apenas para exemplo, e as configuracoes do projeto deixam passar estas coisinhas, porem quando for fazer um projeto mais avancado onde as configuracoes tambem sao mais avancadas, com certeza vai dar um erro quando sua pagina for chamada, o JSF nao vai conseguir compilar a pagina por que nao entendera os comandos HTML, entao ja fica avisado aqui, sempre que for utilizar