No meu caso, a página de cadastro não mostra os componentes, acho que configurei algo errado:
<h:form>
<span class="title">Informações Básicas</span>
<p>
<h:outputText value="Nome: "/>
<h:inputText id="nome" value="#{user.nome}" required="true">
<f:validateLength maximum="45"/>
</h:inputText>
<h:message for="nome" styleClass="erroValidacao"/>
<br />
<h:outputText value="Sobrenome: "/>
<h:inputText id="sobrenome" value="#{user.sobrenome}" required="true">
<f:validateLength maximum="45"/>
</h:inputText>
<h:message for="sobrenome" styleClass="erroValidacao"/>
<br />
<h:outputText value="Email: "/>
<h:inputText id="email" value="#{user.email}" required="true">
<f:validateLength maximum="45"/>
</h:inputText>
<h:message for="email" styleClass="erroValidacao"/>
<br />
<h:outputText value="Re-digite seu Email: "/>
<%-- <h:inputText id="reemail" value="#{user.reemail}" required="true"
validator="#{user.validateEmail}">
<f:validateLength maximum="45"/>
</h:inputText> --%>
<br />
<h:outputText value="Telefone: "/>
<h:inputText id="fone" value="#{user.fone}" required="true">
<f:validateLength maximum="45"/>
</h:inputText>
<h:message for="fone" styleClass="erroValidacao"/>
<br />
<h:outputText value="Endereço: "/>
<h:inputText id="endereco" value="#{user.endereco}" required="true">
<f:validateLength maximum="45"/>
</h:inputText>
<h:message for="endereco" styleClass="erroValidacao"/>
<br />
<h:outputText value="Complemento: "/>
<h:inputText id="complemento" value="#{user.complemento}" required="true">
<f:validateLength maximum="45"/>
</h:inputText>
<h:message for="complemento" styleClass="erroValidacao"/>
<br />
<h:outputText value="Cidade: "/>
<h:inputText id="cidade" value="#{user.cidade}" required="true">
<f:validateLength maximum="45"/>
</h:inputText>
<h:message for="cidade" styleClass="erroValidacao"/>
<br />
<h:outputText value="Estado: "/>
<h:inputText id="estado" value="#{user.estado}" required="true">
<f:validateLength maximum="45"/>
</h:inputText>
<h:message for="estado" styleClass="erroValidacao"/>
<br />
<br />
<br />
<span class="title">Informações Adicionais</span>
<p>
<h:outputText value="Categorias de trabalho: "/>
<p>
<h:selectBooleanCheckbox id="ok" required="true"
requiredMessage="Você precisa estar de acordo com os termos" />
<h:outputText value=" Estou de acordo com o regulamento."/>
<br />
<h:message for="ok" styleClass="erroValidacao"/>
<p>
<br />
<h:commandButton action="#{user.cadastroUser}" value="" styleClass="botCadastro"/>
</h:form>
o bean
public class Cadastro {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
public Cadastro() {
}
public void cadastroUser(User user) {
try {
conn = Conexao.getConexao();
pstmt = conn.prepareStatement("INSERT INTO users001 ("+
"firstname, lastname, email, phone, street, complement, city, state, rate) "+
" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?");
pstmt.setObject(1, user.getNome());
pstmt.setObject(2, user.getSobrenome());
pstmt.setObject(3, user.getEmail());
pstmt.setObject(4, user.getFone());
pstmt.setObject(5, user.getEndereco());
pstmt.setObject(6, user.getComplemento());
pstmt.setObject(7, user.getCidade());
pstmt.setObject(8, user.getEstado());
pstmt.setObject(9, user.getCategoria());
pstmt.execute();
// aqui redireciona pra outra página
} catch (SQLException sqlex) {
sqlex.getMessage();
// return "cadastroError";
}
// return "cadastroOK";
}
...
faces-config
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Página de cadastro -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!--
<navigation-rule>
<from-view-id>/cadastro.jsp</from-view-id>
<navigation-case>
<from-outcome>emailCadastrado</from-outcome>
<to-view-id>/emailNo.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cadastroOK</from-outcome>
<to-view-id>/cadastroOK.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cadastroError</from-outcome>
<to-view-id>/cadastroError.jsp</to-view-id>
</navigation-case>
</navigation-rule>
-->
<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>userBean.Cadastro</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
Por favor, me expliquem o que fiz de errado.
Obrigado.
* edit:
exception encontrada: javax.faces.FacesException: org.apache.jasper.el.JspPropertyNotFoundException: /cadastro.jsp(332,21) '#{user.nome}' Property 'nome' not found on type userBean.Cadastro
at javax.faces.component.UIOutput.getValue(UIOutput.java:176)
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:189)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:320)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:200)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:836)
Não entendo, pensei que em void cadastroUser(User user) { eu chamava a classe User com os getters e settes, mas parece que a excessão lancada ocorre aqui.