[RESOLVIDO]Requisição JSF não chama get/set do controller
9 respostas
leorbarbosa
Pessoal,
quando faço uma requisição jsf, os atributos da minha classe que estão no controller não estão sendo ‘settados’ com os valores que preenchi na tela. Por exemplo, abaixo a listagem na qual eu deveria armazenar o ID do chamado ‘controller.chamado.id’
<h:outputTextvalue="Tipo de chamado"/><h:selectOneMenustyleClass="inputRequerido"id="tipo"value="#{controller.chamado.id}"required="true"><f:selectItemitemLabel="-- Selecione o tipo de chamado -- "itemValue="-1"/><f:selectItemsvalue="#{daoListar.todos}"var="item"itemLabel="#{item.descricao}"itemValue="#{item.id}"/></h:selectOneMenu>
Só que quando vou capturar os valores com ‘get…’, está vindo ‘zero’ que é o default, só que o JSF está barrando (como deveria).
try {
con = conexao;
pst = con.prepareStatement(sql);
pst.setInt(1, chamado.getIdTipoChamado());
Em algum ponto não está havendo a ligação do meu objeto local do controller com os atributos da tela(jsf) de cadastro. No ‘controller’ conforme abaixo, instancio o bean logo quando chamo cadastro.
O jsf nem aciona o submit, tãopouco renderiza a resposta. Para na validação o logo que o click é dado.
Hebert_Coelho
Tem como postar a página toda?
leorbarbosa
Não gosto de mandar a página toda pois fica difícil de ler, mas acho que está pequena:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html><htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:h="http://java.sun.com/jsf/html"xmlns:ui="http://java.sun.com/jsf/facelets"xmlns:f="http://java.sun.com/jsf/core"><head><title>.: HelpDesk - Novo Chamado :.</title><linkrel="stylesheet"type="text/css"href="css/formEdicao.css"/></head><h:body><ui:includesrc="templates/cabecalho.xhtml"/><f:view><h:formid="edicao"><h:panelGridfooterClass="alinhaRodape"columns="2"style="background-color: beige; border-width: 1px; border-style: solid; border-color: silver;margin-left: 15px;font-family: verdana, arial; font-size: 11px; font-weight: bold;"><f:facetname="header"><h:outputTextvalue="Abrindo um novo chamado"/></f:facet><h:outputTextvalue="Tipo de chamado"/><h:selectOneMenustyleClass="inputRequerido"id="tipoChamado"value="#{controllerChamado.chamado.idTipoChamado}"required="true"><f:selectItemitemLabel="-- Selecione o tipo de chamado -- "itemValue="-1"/><f:selectItemsvalue="#{daoTipoChamado.todos}"var="item"itemLabel="#{item.descricao}"itemValue="#{item.idTipoChamado}"/></h:selectOneMenu><h:outputTextvalue="Quem está solicitando"/><h:inputTextstyleClass="inputRequerido"size="50"maxlength="100"id="quemSolicitou"value="#{controllerChamado.chamado.quemSolicitou}"required="true"/><h:outputTextvalue="Data de criação"/><h:inputTextstyleClass="inputRequerido"size="16"maxlength="16"id="dtCriacao"value="#{controllerChamado.chamado.dtCriacao}"readonly="true"/><h:outputTextvalue="Observação"/><h:inputTextarearows="5"cols="100"styleClass="inputOpcional"id="obs"value="#{controllerChamado.chamado.obs}"/><f:facetname="footer"><h:commandButtonvalue="Gravar"action="#{controllerChamado.create}"/></f:facet></h:panelGrid></h:form></f:view><ui:includesrc="templates/rodape.xhtml"/></h:body></html>
Hebert_Coelho
Primeiro tente trocar de head para h:head.
Caso não funcione, post aí o método que o botão create ta chamando.
Agora é que não entendi nada, na primeira tentativa de gravar para na validação do JSF. Na segunda tentativa passa na validação e chama o método acima. Só que a instância ‘this.chamado’ está com os atributos nulos, e dá erro de SQL no INSERT.
:?:
Hebert_Coelho
Tenta sem o throws Exception.
Seu managedBean está com qual escopo?
leorbarbosa
Escopo de sessão,…
leorbarbosa
Valeu pela força,
passou despercebido o debug da app:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)