====|| O Problema ||======
Porem o que eu não consigo e pegar os valores dos inputText(#{horasBean.horas.entrada})
pq eles já estão setados no objeto.
Como passar nova informação no inputText e setar para usar no select?
Tentei assim, mas não funcionou, pq ele pegas as informações antigas do objeto:
O seu objeto “horas” é do tipo List? Por exemplo…
No ManagedBean…
//Lista de horas que é usado pela sua tabelaList<Hora>horas=newArrayList<Hora>();//Hora da tabela que foi selecionada para edição ou será salvaHorahoraSelecionada=newHora();//getters e setters omitidos
com isto, no seu xhtml ou jsp, você pode usar assim…
O seu botão “Atualizar” deve chamar um método para atualizar o List de horas, e também indicar o ID da tabela a ser dada refresh depois de tudo acontecer. Este refresh, no caso de uso de primefaces 2.2 poderia ficar assim…
To com problema na verdade nos SET´s.
Não sei porque eu não estou conseguindo mais setar as variaveis:
Segue o MB...
importdao.HorasDAO;importdao.UsuarioDAO;importjava.io.Serializable;importjava.util.Date;importjava.util.List;importjavax.enterprise.context.SessionScoped;importjavax.faces.bean.ManagedBean;importjavax.faces.model.DataModel;importjavax.faces.model.ListDataModel;importjavax.inject.Named;importmodel.Horas;importmodel.TotalHrs;importmodel.Usuario;importutil.Calculo2;@Named@SessionScoped@ManagedBeanpublicclassHorasBeanimplementsSerializable{privateHorasDAOhorasDAO;privateHorashoras=newHoras();privateDataModel<Horas>horasTotal;privateStringId;privateUsuarioDAOusuarioDAO;privateintmeses;privateintano;privateDatedataInicial;privateDatedataFinal;privateTotalHrstotal;HorashoraSelecionada=newHoras();// === GET´s e SET´s === \\.../---Metodoquecarregaosdados===horas.xhtml---// publicDataModel<Horas>getHorasTotal(){Stringiduser=getId();intmes=getMeses();intan=getAno();horasDAO=newHorasDAO();Calculo2calc=newCalculo2();//se não informar a data carregar todos os registrosif(getMeses()==0){List<Horas>horasList=horasDAO.carrega(iduser);setTotal(calc.calcularTotal(horasList));horasTotal=newListDataModel<Horas>(horasList);}else{List<Horas>horasList=horasDAO.carrega(iduser,mes,an);calc.calcularTotal(horasList);horasTotal=newListDataModel<Horas>(horasList);}returnhorasTotal;}publicHorasselecionaLinha(){Horasc=newHoras();c=(Horas)horasTotal.getRowData();Usuarious=getUsuarios();c.setCod_func(us.getIdusuario());returnc;}publicStringbtnAlterar(){Horashrs=getHoraSelecionada();System.out.println(hrs.getEntrada());// Está aparecendo a mesma hora do banco, //que foi setado no inicio pelo "selecionaLinha"//Deveria ser o valor que digito no inputText da paginahorasDAO=newHorasDAO();horasDAO.alterarHorasWeb(hrs);return"horas";}
XHTML:
<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core"xmlns:p="http://primefaces.prime.com.tr/ui"><h:head><title>Atualiza Horas</title><!--Chamada ao arquivo CSS --><linkrel="StyleSheet"type="text/css"href="css/estilo.css"media="screen"/></h:head><h:body><!--Coloca os dados no centro(center) da tela --><divalign="left"><h:form><h1><h:outputTextvalue="Atuzalização de Horas do XTIME"styleClass="titulo"/></h1><fieldset><legend>Parametros para Atualizar</legend><h:panelGridcolumns="2"columnClasses="coluna,coluna2"><h:outputLabelvalue="Nome:"/><h:outputLabelvalue="#{horasBean.usuarios.nomeCompleto}"/><h:outputLabelvalue="Codigo:"/><h:outputLabelvalue="#{horasBean.usuarios.idusuario}"/><h:outputLabelvalue="Departamento:"/><h:outputLabelvalue="#{horasBean.usuarios.dep}"/><h:outputLabelvalue="Data:"/><h:outputLabelvalue="#{horasBean.horaSelecionada.data}"><f:convertDateTimepattern="dd/MM/yyyy"/></h:outputLabel></h:panelGrid></fieldset><fieldset><legend>Atualizar Horas</legend><h:panelGridcolumns="2"columnClasses="coluna,coluna2"><h:outputLabelvalue="Entrada:"/><h:inputTextid="entrada"value="#{horasBean.horaSelecionada.entrada}"/><h:outputLabelvalue="Almoço:"/><h:inputTextvalue="#{horasBean.horaSelecionada.almoco}"/><h:outputLabelvalue="Retorno:"/><h:inputTextvalue="#{horasBean.horaSelecionada.retorno}"/><h:outputLabelvalue="Saida:"/><h:inputTextvalue="#{horasBean.horaSelecionada.saida}"/><h:outputLabelvalue="Adicional:"/><h:inputTextvalue="#{horasBean.horaSelecionada.adicional}"/></h:panelGrid></fieldset></h:form></div><h:form><divalign="center"><fieldset><legend>Justificativa</legend><h:outputLabelvalue="Justificativa: "/><h:selectOneMenuvalue="#{horasBean.horaSelecionada.justificativa}"><f:selectItemitemValue=""itemLabel="Justificativa"/><f:selectItemitemValue="1"itemLabel="Banco Horas"/><f:selectItemitemValue="2"itemLabel="Atestado Medico Dia"/><f:selectItemitemValue="3"itemLabel="Atestado Medico horas"/><f:selectItemitemValue="4"itemLabel="Ferias"/><f:selectItemitemValue="5"itemLabel="Licenca Medica"/><f:selectItemitemValue="6"itemLabel="Licenca Maternidade"/><f:selectItemitemValue="Outros"itemLabel="Outros"/><f:selectItemitemValue="8"itemLabel="Falta Injustificada"/></h:selectOneMenu><br/><tralign="center"><h:outputTextvalue="Observações: "/></tr><h:inputTextareavalue="#{horasBean.horaSelecionada.obs}"rows="6"cols="50"/></fieldset><br/></div></h:form><divalign="center"><h:form><h:commandButtonvalue="Cancelar"action="horas"/><h:commandButtonvalue="Alterar"action="#{horasBean.btnAlterar}"/><h:commandButtonvalue="Voltar"action="horas"/></h:form></div></h:body></html>
<?xml version='1.0' encoding='UTF-8'?><!-- =========== FULL CONFIGURATION FILE ================================== --><faces-configversion="2.0"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"><managed-bean><managed-bean-name>horasBean</managed-bean-name><managed-bean-class>controller.HorasBean</managed-bean-class><managed-bean-scope>session</managed-bean-scope></managed-bean><navigation-rule><from-view-id>/index.xhtml</from-view-id><navigation-case><from-outcome>total</from-outcome><to-view-id>/total.xhtml</to-view-id></navigation-case><navigation-case><from-outcome>fechamento</from-outcome><to-view-id>/fechamento.xhtml</to-view-id></navigation-case><navigation-case><from-outcome>periodo</from-outcome><to-view-id>/periodo.xhtml</to-view-id></navigation-case></navigation-rule><navigation-rule><from-view-id>/horas.xhtml</from-view-id><navigation-case><from-outcome>atualizateste</from-outcome><to-view-id>/atualizateste.xhtml</to-view-id></navigation-case></navigation-rule><navigation-rule><from-view-id>/total.xhtml</from-view-id><navigation-case><from-outcome>case1</from-outcome><to-view-id>/atualizateste.xhtml</to-view-id></navigation-case></navigation-rule></faces-config>
oliversistemas
Na linha 15 do seu xhtml experimente trocar isto…
<h:form>
Por isto…
<h:formid="formUsuarios"prependId="false">
Faça isto em todos os formulários (mas sempre com um id diferente). Este prependId desativa a auto-atribuição de Ids para os componentes da página.
mateus.cordeiro
Oliver, ainda não consegui, vê se é isso mesmo o correto, por favor:
<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core"xmlns:p="http://primefaces.prime.com.tr/ui"><h:head><title>Atualiza Horas</title><!--Chamada ao arquivo CSS --><linkrel="StyleSheet"type="text/css"href="css/estilo.css"media="screen"/></h:head><h:body><!--Coloca os dados no centro(center) da tela --><divalign="left"><h:formid="formUsuarios"prependId="false"><h1><h:outputTextvalue="Atuzalização de Horas do XTIME"styleClass="titulo"/></h1><fieldset><legend>Parametros para Atualizar</legend><h:panelGridcolumns="2"columnClasses="coluna,coluna2"><h:outputLabelvalue="Nome:"/><h:outputLabelvalue="#{horasBean.usuarios.nomeCompleto}"/><h:outputLabelvalue="Codigo:"/><h:outputLabelvalue="#{horasBean.usuarios.idusuario}"/><h:outputLabelvalue="Departamento:"/><h:outputLabelvalue="#{horasBean.usuarios.dep}"/><h:outputLabelvalue="Data:"/><h:outputLabelvalue="#{horasBean.horaSelecionada.data}"><f:convertDateTimepattern="dd/MM/yyyy"/></h:outputLabel></h:panelGrid></fieldset><fieldset><legend>Atualizar Horas</legend><h:panelGridcolumns="2"columnClasses="coluna,coluna2"><h:outputLabelvalue="Entrada:"/><h:inputTextid="entrada"value="#{horasBean.horaSelecionada.entrada.hours}"/><h:outputLabelvalue="Almoço:"/><h:inputTextid="almoco"value="#{horasBean.horaSelecionada.almoco}"/><h:outputLabelvalue="Retorno:"/><h:inputTextid="retorno"value="#{horasBean.horaSelecionada.retorno}"/><h:outputLabelvalue="Saida:"/><h:inputTextid="saida"value="#{horasBean.horaSelecionada.saida}"/><h:outputLabelvalue="Adicional:"/><h:inputTextid="adcional"value="#{horasBean.horaSelecionada.adicional}"/></h:panelGrid></fieldset></h:form></div><h:formid="formJustificativa"prependId="false"><divalign="center"><fieldset><legend>Justificativa</legend><h:outputLabelvalue="Justificativa: "/><h:selectOneMenuvalue="#{horasBean.horaSelecionada.justificativa}"><f:selectItemitemValue=""itemLabel="Justificativa"/><f:selectItemitemValue="1"itemLabel="Banco Horas"/><f:selectItemitemValue="2"itemLabel="Atestado Medico Dia"/><f:selectItemitemValue="3"itemLabel="Atestado Medico horas"/><f:selectItemitemValue="4"itemLabel="Ferias"/><f:selectItemitemValue="5"itemLabel="Licenca Medica"/><f:selectItemitemValue="6"itemLabel="Licenca Maternidade"/><f:selectItemitemValue="Outros"itemLabel="Outros"/><f:selectItemitemValue="8"itemLabel="Falta Injustificada"/></h:selectOneMenu><br/><tralign="center"><h:outputTextvalue="Observações: "/></tr><h:inputTextareavalue="#{horasBean.horaSelecionada.obs}"rows="6"cols="50"/></fieldset><br/></div></h:form><divalign="center"><h:formid="formBtns"prependId="false"><h:commandButtonvalue="Cancelar"action="horas"/><h:commandButtonvalue="hrs"action="#{horasBean.btnAlterar}"/><h:commandButtonvalue="Voltar"action="horas"/></h:form></div></h:body></html>
mateus.cordeiro
Acabei de fazer um teste tirando os “FORMS”, deixando apenas um, mas não ta funcionando!
Alguma dica? Ate mesmo p teste?
oliversistemas
Na linha 6 do seu xhtml está…
xmlns:p="http://primefaces.prime.com.tr/ui">
Este endereço vc usa para o primefaces 2.2. O JAR que vc está usando é desta versão?
mateus.cordeiro
É esse o jar “PrimeFaces 2.2.1”!
Eu utilizei o primafaces para fazer um teste, se no input dele setaria o setHoras
Já criei outra class para fazer o manegerBean, mas o problema persiste… não funciona o Set!
oliversistemas
Cara… verifique os imports do seu HorasBean. Você está usando:
importjavax.enterprise.context.SessionScoped;
mas deveria ser
importjavax.faces.bean.SessionScoped;
testa aí.
mateus.cordeiro
Oliver, agora eu não intendi…
Eu mudei o import para o javax.faces.bean.SessionScoped, e agora nem a tela inicial que eu passo o parametro pra filtrar não seta mais o “ID”
Esse cara aqui:
public DataModel<Horas> getHorasTotal() {
String iduser = getId();//Esse cara não recebe mais a informações que recebia anteriormente, que estava normal, agora ele vem "null"
int mes = getMeses();
oliversistemas
Ao meu ver, a falha agora está no HorasBean. Você deve inicializar todas as variáveis para que o xhtml possa carregá-las e/ou atribui valores para elas quando uma ação é realizada.
Experimente alterar o HorasBean para isto:
@SessionScoped@ManagedBeanpublicclassHorasBeanimplementsSerializable{//colocando new nos tipos não-primitivos e também nos tipos String...privateHorasDAOhorasDAO=newHorasDAO();privateHorashoras=newHoras();privateDataModel<Horas>horasTotal=newDataModel<Horas>();privateStringId=newString();privateUsuarioDAOusuarioDAO=newUsuarioDAO();privateintmeses;privateintano;privateDatedataInicial=newDate();privateDatedataFinal=newDate();privateTotalHrstotal=newTotalHrs();HorashoraSelecionada=newHoras();// === GET´s e SET´s === \\
Marcio_Nogueira
Utilize o método merge do objeto EntityManager para realizar o update.
mateus.cordeiro
Oliver,
Primeiro quero agradecer a atenção e a disposição em me ajudar!
Esse é meu primeiro projeto com Java Web.
Fiz como vc havia mencionado,
Tirei o “Named”
Iniciei todos os objetos com “new”
A primeira parte das telas voltou a funcionar, consigo passar o Id do usuario fazer o filtro, apresentar as informações que estão no banco de dados, ate pegar as informações apresentar em um outra pagina que é para editar.
Essa continua dando problema, nessa pagina (“atualiza horas”) eu altero os valores do inputText mas ele não seta as informações.
Mais alguma sugestão?
Muito obrigado pela ajuda!
mateus.cordeiro
Oliver,
Fiz alguns testes aqui, e está fucionando.
Mas antes de finalizar o topico vou apenas confirma se está correto o meu problema.
Parece que o problema é o seguinte eu estou passando um objeto do tipo java.sql.Time e o inputText é String!
O problema está sendo nessa conversão.
Vou apenas confirma isso e já posto o resultado.
Obrigado amigo pela paciência e ajuda!
mateus.cordeiro
Obrigado pela ajuda e o problema era mesmo o tipo do objeto que eu tentava setar.
Fiz uma conversão de Time para String e funcionou perfeitamente!