eu tenho um datatable, na qual quero editar o registro desejado. Quando eu clico em “editar” ele não executa a action, ou seja, ele n redireciona para a tela de alterar, e simplesmente da um refresh na minha datatable. Alguém saberia me explicar ?
Aqui está o código:
<h:formid="formcons"><rich:panel><f:facetname="header"><h:outputTextvalue="Consulta Infracao"/></f:facet><h:outputLabelvalue="Pesquisar por"for="tpoParametro"/><h:inputTextvalue="#{infracaoBean.tipoDeParametro}"id="tpoParametro"size="10"maxlength="20"/><h:commandButtonaction="#{infracaoBean.listarInfracoesPorParametro}"value="Pesquisar"/><h:selectOneRadioid="status"value="#{infracaoBean.status}"style="left:67px;"><f:selectItemescape="false"itemLabel="Data"itemValue="0"/><f:selectItemescape="false"itemLabel="Motorista"itemValue="1"/><f:selectItemescape="false"itemLabel="Tipo de Multa"itemValue="2"/></h:selectOneRadio><rich:dataTablevalue="#{infracaoBean.infracoes}"var="i"style=" width : 600px; "onRowMouseOver="this.style.backgroundColor='#F1F1F1'"onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"cellpadding="0"cellspacing="0"rows="10"><f:facetname="header"><rich:columnGroup><h:column><h:outputTextvalue="#{lb['codigo']}"/></h:column><h:column><h:outputTextvalue="#{lb['dt.infracao']}"/></h:column><h:column><h:outputTextvalue="#{lb['hora.infrcao']}"/></h:column><h:column><h:outputTextvalue="#{lb['pontuacao']}"/></h:column><h:column><h:outputTextvalue="Tipo de Multa"/></h:column><h:column><h:outputTextvalue="#{lb['motorista']}"/></h:column><h:column><h:outputTextvalue="Pagamento"/></h:column><h:column><h:outputTextvalue="#{lb['editar']}"/></h:column><h:column><h:outputTextvalue="#{lb['excluir']}"/></h:column></rich:columnGroup></f:facet><h:column><h:outputTextvalue="#{i.cdInfracao}"/></h:column><h:column><h:outputTextvalue="#{i.dtInfracao}"/></h:column><h:column><h:outputTextvalue="#{i.horaInfracao}"><f:convertDateTimetype="time"pattern="HH:mm"timeZone="GMT-3"/></h:outputText></h:column><h:column><h:outputTextvalue="#{i.tipoInfracao.dsTipoInfracao}"/></h:column><h:column><h:outputTextvalue="#{i.catInfracao.descCategoriaInfracao}"/></h:column><h:column><h:outputTextvalue="#{i.motorista.nome}"/></h:column><h:column><h:selectBooleanCheckboxvalue="#{i.status}"readonly="true"/></h:column><h:column><h:commandLinkaction="#{infracaoBean.alterarInfracao}"><f:setPropertyActionListenertarget="#{infracaoBean.infracao}"value="#{i}"/><h:graphicImagevalue="/images/edit.png"alt="editar"style="border:0"/></h:commandLink></h:column><h:column><h:commandLinkaction="#{infracaoBean.remover}"><f:setPropertyActionListenertarget="#{infracaoBean.infracao}"value="#{i}"/><h:graphicImagevalue="/images/excluir.gif"alt="excluir"style="border:0"/></h:commandLink></h:column></rich:dataTable><center><h:outputTextvalue="Nenhuma infração cadastrada."rendered="#{empty infracaoBean.infracoes}"/></center></rich:panel></h:form>
public String alterarInfracao(){
return "alt_infracao";
}
Estou utilizando jsf 1.2.
robertoJames
E oq está acontecendo, é simplesmente que, ao invés dele executar a action e fizer o redirecionamento para a pagina de alt_infracao, ele da um refresh na pagina inteira. ou seja, um F5.
robertoJames
e ae pessoal,
nada ?
robertoJames
ate o momento n resolvi meu problema,
alguem teria como me ajudar ?
robertoJames
ngm ?
H
henriquejhc
Mas o método chega a ser executado?
robertoJames
Não chega não. Quando eu debbugo, ele não passa pelo checkpoint e acaba passando direto.
Saberia me dizer o porquê ?
B
Binnho
Você já verificou se os outros botões funcionam normalmente?
R
raf4ever
Onde tem h:column tenta trocar para rich:column
É assim que eu faço e funciona.
robertoJames
Estou passando por esse problema de novo.
aqui está meu rich:dataTable
<rich:panel><rich:dataTablevalue="#{acaoBean.acaos}"var="set"><rich:column><f:facetname="header"><h:outputTextvalue="Setor"/></f:facet><h:outputTextvalue="#{set.projeto.setor.nome}"/></rich:column><rich:column><f:facetname="header"><h:outputTextvalue="Progr / Proje"/></f:facet><h:outputTextvalue="#{set.projeto.progprojStr} : #{set.projeto.seq}"/></rich:column><rich:column><f:facetname="header"><h:outputTextvalue="Seq"/></f:facet><h:outputTextvalue="#{set.seq}"/></rich:column><rich:column><f:facetname="header"><h:outputTextvalue="Nome"/></f:facet><h:outputTextvalue="#{set.nome}"/></rich:column><rich:column><f:facetname="header"><h:outputTextvalue="Início"/></f:facet><h:outputTextvalue="#{set.dataIniStr}"/></rich:column><rich:column><f:facetname="header"><h:outputTextvalue="Fim"/></f:facet><h:outputTextvalue="#{set.dataFimStr}"/></rich:column><rich:column><f:facetname="header"><h:outputTextvalue="Responsável"/></f:facet><h:outputTextvalue="#{set.usuario.nome}"/></rich:column><rich:column><f:facetname="header"><h:outputTextvalue="Real.(%)"/></f:facet><h:outputTextvalue="#{set.realizado}"/></rich:column><rich:column><f:facetname="header"><h:outputTextvalue="Ações"/></f:facet><h:commandButtonimage="/recursos/imagem/visualizar.png"action="alterarAcao"><f:setPropertyActionListenervalue="#{set}"target="#{acaoBean.acao}"/><f:setPropertyActionListenervalue="#{progprojBean.progProj}"target="#{acaoBean.progProj}"/></h:commandButton> <h:commandLinkvalue="Excluir"action="#{acaoBean.excluir}"onclick="return confirm('Deseja confirmar a exclusão?');"><f:setPropertyActionListenervalue="#{set}"target="#{acaoBean.acao}"/></h:commandLink></rich:column></rich:dataTable></rich:panel>
Quando clico em visualizar <h:commandButton image="/recursos/imagem/visualizar.png" action=“alterarAcao”>
ou seja, ele atualiza a pagina atual e não redireciona para a action mencionada acima.
Alguem poderia me ajudar ?
R
raf4ever
Como está o seu “from-view-id” ?
robertoJames
from-view-id ?
Não tenho declarado não.
robertoJames
e um detalhe é que. fora do dataTable o action funciona, ou seja, ele redireciona, porém dentro dele não funciona. Jà tentei colcocar o t:saveState, porém continua o mesmo problema. E tentei tbm usar o f:setProperty …
porém sem exito !
R
raf4ever
robertoJames:
from-view-id ?
Não tenho declarado não.
Tem que ter né
robertoJames
o meu é “any”.
R
raf4ever
<from-view-id>*</from-view-id>
?
robertoJames
seguinte: dentro do codigo n tem from-view-id.
Porém no diagrama, tem um bloco azul, e com descrição [any]. Mas não está declarado no código.
neno
Roberto,
o problema é que command link dentro de um datatable não funciona com o scope request, altere o scopo do manegebean que esta utilizando no commandlink para session no faces-config que deve funcionar.
Isso é claro, se essa não impactar muito em sua aplicação.
Esses é um assunto bem polêmico.
eu acredito que esse problema ja foi resolvido na versão mais atualizada do jsf, não tenho certeza.
Bom é isso.
Abrçs.
robertoJames
Bem,
por esse motivo eu tentei utilizar o t:saveState, justamente pq o scopo é Request, e com o saveState ele fica entre Request e Session.
Bem, n posso colocar como session no momento, pois vai mudar algumas coisas. Eu não sei porque mas, ao tentar utilizar o a4j:keepAlive ele da um erro muito estranho.
As duas soluções que eu mais vi pela internet foi utilizar o saveState e o keepAlive. Porem com o saveState não funciona. e o keepAlive da error.
publicclassAcaoBean{privateAcaoacao=newAcao();privateList<Acao>acaos=newArrayList<Acao>();privateProgProjprogProj=newProgProj();privateAcaoServiceacaoService=newAcaoService();privateProgProjServiceprogProjService=newProgProjService();privateUsuariosServiceusuariosService=newUsuariosService();privateMetodosmetodos=newMetodos();publicStringincluir(){try{acaoService.incluir(acao);acao=null;Mensagem.addMsgSucesso("Inclusão realizada com sucesso.");}catch(NegocioExceptione){Mensagem.addMsgErro(e.getMessage());}returnnull;}publicStringalterar(){try{acaoService.alterar(acao);acao=null;Mensagem.addMsgSucesso("Alteração realizada com sucesso.");return"listarAcao";}catch(NegocioExceptione){Mensagem.addMsgErro(e.getMessage());returnnull;}}publicStringexcluir(){try{acaoService.excluir(acao);acao=null;acaos=acaoService.obterTodos();Mensagem.addMsgSucesso("Exclusão realizada com sucesso.");}catch(NegocioExceptione){Mensagem.addMsgErro(e.getMessage());}returnnull;}publicList<Acao>getAcaos(){System.out.println(this.progProj.getCodigo());//acaos = acaoService.obterTodos();try{acaos=acaoService.obterAcoesPorProj(this.progProj.getCodigo());}catch(NegocioExceptione){// TODO Auto-generated catch blocke.printStackTrace();}returnacaos;}publicAcaogetAcao(){if(acao==null){acao=newAcao();}returnacao;}publicvoidsetAcao(Acaoacao){this.acao=acao;}// ProjetopublicLonggetcodprojeto(){if(getAcao().getProjeto()!=null){returngetAcao().getProjeto().getCodigo();}return0L;}publicvoidsetcodprojeto(LongCodprojeto)throwsNegocioException{ProgProjprogProj=progProjService.obterPorCodigo(Codprojeto);getAcao().setProjeto(progProj);}publicList<SelectItem>getprojetos()throwsNegocioException{List<SelectItem>itens=newArrayList<SelectItem>();itens.add(newSelectItem(0L,"Selecione"));for(ProgProjprogProj:progProjService.obterTodos()){itens.add(newSelectItem(progProj.getCodigo(),metodos.retornaStr(progProj.getSetor().getNome()+" - "+progProj.getProgprojStr()+" - "+progProj.getSeq()+" - "+progProj.getNome(),150)));}returnitens;}// Usuário publicLonggetcodusuario(){if(getAcao().getUsuario()!=null){returngetAcao().getUsuario().getCodigo();}return0L;}publicvoidsetcodusuario(LongCodusuario)throwsNegocioException{Usuariosusuarios=usuariosService.obterPorCodigo(Codusuario);getAcao().setUsuario(usuarios);}publicList<SelectItem>getusuarios()throwsNegocioException{List<SelectItem>itens=newArrayList<SelectItem>();itens.add(newSelectItem(0L,"Selecione"));for(Usuariosusuarios:usuariosService.obterTodos()){itens.add(newSelectItem(usuarios.getCodigo(),usuarios.getNome()));}returnitens;}publicvoidsetProgProj(ProgProjprogProj){this.progProj=progProj;}publicProgProjgetProgProj(){returnprogProj;}
publicclassProgProjBean{privateProgProjprogProj=newProgProj();privateList<ProgProj>progProjs;privateList<ProgProj>listaProjAgua=newArrayList<ProgProj>();privateList<ProgProj>listaProjEsgoto=newArrayList<ProgProj>();privateList<ProgProj>listaProjDrenagem=newArrayList<ProgProj>();privateList<ProgProj>listaProjResiduos=newArrayList<ProgProj>();privateProgProjDAOprogDao=newProgProjDAO();privateProgProjServiceprogProjService=newProgProjService();privateSetorServicesetorService=newSetorService();privateUsuariosServiceusuariosService=newUsuariosService();UsuariosBeanusuarioMBean=(UsuariosBean)FacesContextComum.getSessionAttribute("usuariosBean");publicStringincluir(){try{progProjService.incluir(progProj);progProj=null;Mensagem.addMsgSucesso("Inclusão realizada com sucesso.");}catch(NegocioExceptione){Mensagem.addMsgErro(e.getMessage());}returnnull;}publicStringalterar(){try{progProjService.alterar(progProj);progProj=null;Mensagem.addMsgSucesso("Alteração realizada com sucesso.");return"listarProgProj";}catch(NegocioExceptione){Mensagem.addMsgErro(e.getMessage());returnnull;}}publicStringexcluir(){try{progProjService.excluir(progProj);progProj=null;progProjs=progProjService.obterTodos();Mensagem.addMsgSucesso("Exclusão realizada com sucesso.");}catch(NegocioExceptione){Mensagem.addMsgErro(e.getMessage());}returnnull;}publicList<ProgProj>getProgProjs(){try{if(progProjs==null){progProjs=progProjService.obterTodos();}}catch(NegocioExceptione){Mensagem.addMsgErro(e.getMessage());}returnprogProjs;}publicList<ProgProj>getProgProjsPorMunicipio(){try{if(progProjs==null){progProjs=progProjService.obterProgsPorMunicipio(usuarioMBean.getMunicipio().getCodigo());}}catch(NegocioExceptione){Mensagem.addMsgErro(e.getMessage());}returnprogProjs;}publicProgProjgetProgProj(){if(progProj==null){progProj=newProgProj();}returnprogProj;}publicvoidsetProgProj(ProgProjprogProj){this.progProj=progProj;}// RelatóriospublicStringgerarRelatorioResumo(){Relatorio.carregarRelatorio("/relatorios/ResumoProg.jasper",false);returnnull;}// Setor publicLonggetcodigosetor(){if(getProgProj().getSetor()!=null){returngetProgProj().getSetor().getCodigo();}return0L;}publicvoidsetcodigosetor(LongCodigosetor)throwsNegocioException{Setorsetor=setorService.obterPorCodigo(Codigosetor);getProgProj().setSetor(setor);}publicList<SelectItem>getsetores()throwsNegocioException{List<SelectItem>itens=newArrayList<SelectItem>();itens.add(newSelectItem(0L,"Selecione"));for(Setorsetor:setorService.obterTodos()){itens.add(newSelectItem(setor.getCodigo(),setor.getNome()));}returnitens;}// ProjPai publicLonggetcodprojpai(){if(getProgProj().getProjpai()!=null){returngetProgProj().getProjpai().getCodigo();}return0L;}publicvoidsetcodprojpai(LongCodprojpai)throwsNegocioException{ProgProjprogProj=progProjService.obterPorCodigo(Codprojpai);getProgProj().setProjpai(progProj);}publicList<SelectItem>getprojpais()throwsNegocioException{List<SelectItem>itens=newArrayList<SelectItem>();itens.add(newSelectItem(0L,"Selecione"));for(ProgProjprogProj:progProjService.obterTodos()){itens.add(newSelectItem(progProj.getCodigo(),progProj.getNome()));}returnitens;}// Usuário publicLonggetcodusuario(){if(getProgProj().getUsuario()!=null){returngetProgProj().getUsuario().getCodigo();}return0L;}publicvoidsetcodusuario(LongCodusuario)throwsNegocioException{Usuariosusuarios=usuariosService.obterPorCodigo(Codusuario);getProgProj().setUsuario(usuarios);}publicList<SelectItem>getusuarios()throwsNegocioException{List<SelectItem>itens=newArrayList<SelectItem>();itens.add(newSelectItem(0L,"Selecione"));for(Usuariosusuarios:usuariosService.obterTodos()){itens.add(newSelectItem(usuarios.getCodigo(),usuarios.getNome()));}returnitens;}publicvoidsetListaProjAgua(List<ProgProj>listaProjAgua){this.listaProjAgua=listaProjAgua;}publicList<ProgProj>getListaProjAgua(){setListaProjAgua(progDao.listarProjAgua(usuarioMBean.getMunicipio().getCodigo()));/*int resto = listaProjAgua.size()%5; if (resto != 0){ Integer qntoFalta = 5 - resto; for (int i=0;i<qntoFalta;i++){ listaProjAgua.add(new ProgProj()); } */returnlistaProjAgua;}publicvoidsetListaProjEsgoto(List<ProgProj>listaProjEsgoto){this.listaProjEsgoto=listaProjEsgoto;}publicList<ProgProj>getListaProjEsgoto(){setListaProjEsgoto(progDao.listarProjEsgoto(usuarioMBean.getMunicipio().getCodigo()));returnlistaProjEsgoto;}publicvoidsetListaProjDrenagem(List<ProgProj>listaProjDrenagem){this.listaProjDrenagem=listaProjDrenagem;}publicList<ProgProj>getListaProjDrenagem(){setListaProjDrenagem(progDao.listarProjDrenagem(usuarioMBean.getMunicipio().getCodigo()));returnlistaProjDrenagem;}publicvoidsetListaProjResiduos(List<ProgProj>listaProjResiduos){this.listaProjResiduos=listaProjResiduos;}publicList<ProgProj>getListaProjResiduos(){setListaProjResiduos(progDao.listarProjResiduos(usuarioMBean.getMunicipio().getCodigo()));returnlistaProjResiduos;}
Bem, eu pensava que apenas entidades deveriam implementar serializable.
ae estão eles.
V
vagner.oliveira2
Coloca a tag h:messages no inicio do seu form, dai caso ocorra algum erro na validação ou conversão de algum componentes a mensagem será adicionada no componente.
robertoJames
Coloquei o h:messages … e nada de funcionar, ou melhor,
nada de mostrar error.
neno
roberto, no caso como vc esta guardando o estado do managed bean inteiro
<t:saveState value="#{acaoBean}"/>
Seu manage bean deve implementar Serializable sim, a fim de vc conseguir resgatar seus atributos.
o mesmo se aplica pro a4j:keepAlive, que no caso guarda o proprio menagedBean de qualquer jeito, precisa estar serializado.
robertoJames
Continua sem funcionar.
…
robertoJames
ngm ?
R
rjbcordeiro
robertoJames:
Estou passando por esse problema de novo.
aqui está meu rich:dataTable
<rich:panel><rich:dataTablevalue="#{acaoBean.acaos}"var="set"><rich:column><f:facetname="header"><h:outputTextvalue="Setor"/></f:facet><h:outputTextvalue="#{set.projeto.setor.nome}"/></rich:column><rich:column><f:facetname="header"><h:outputTextvalue="Progr / Proje"/></f:facet><h:outputTextvalue="#{set.projeto.progprojStr} : #{set.projeto.seq}"/></rich:column><rich:column><f:facetname="header"><h:outputTextvalue="Seq"/></f:facet><h:outputTextvalue="#{set.seq}"/></rich:column><rich:column><f:facetname="header"><h:outputTextvalue="Nome"/></f:facet><h:outputTextvalue="#{set.nome}"/></rich:column><rich:column><f:facetname="header"><h:outputTextvalue="Início"/></f:facet><h:outputTextvalue="#{set.dataIniStr}"/></rich:column><rich:column><f:facetname="header"><h:outputTextvalue="Fim"/></f:facet><h:outputTextvalue="#{set.dataFimStr}"/></rich:column><rich:column><f:facetname="header"><h:outputTextvalue="Responsável"/></f:facet><h:outputTextvalue="#{set.usuario.nome}"/></rich:column><rich:column><f:facetname="header"><h:outputTextvalue="Real.(%)"/></f:facet><h:outputTextvalue="#{set.realizado}"/></rich:column><rich:column><f:facetname="header"><h:outputTextvalue="Ações"/></f:facet><h:commandButtonimage="/recursos/imagem/visualizar.png"action="alterarAcao"><f:setPropertyActionListenervalue="#{set}"target="#{acaoBean.acao}"/><f:setPropertyActionListenervalue="#{progprojBean.progProj}"target="#{acaoBean.progProj}"/></h:commandButton> <h:commandLinkvalue="Excluir"action="#{acaoBean.excluir}"onclick="return confirm('Deseja confirmar a exclusão?');"><f:setPropertyActionListenervalue="#{set}"target="#{acaoBean.acao}"/></h:commandLink></rich:column></rich:dataTable></rich:panel>
Quando clico em visualizar <h:commandButton image="/recursos/imagem/visualizar.png" action=“alterarAcao”>