====|| 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>
O
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.
M
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>
M
mateus.cordeiro
Acabei de fazer um teste tirando os “FORMS”, deixando apenas um, mas não ta funcionando!
Alguma dica? Ate mesmo p teste?
O
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?
M
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!
O
oliversistemas
Cara… verifique os imports do seu HorasBean. Você está usando:
importjavax.enterprise.context.SessionScoped;
mas deveria ser
importjavax.faces.bean.SessionScoped;
testa aí.
M
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();
O
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 === \\
M
Marcio_Nogueira
Utilize o método merge do objeto EntityManager para realizar o update.
M
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!
M
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!
M
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!