[Resolvido] 2 ou mais botoes no formulario JSF 2.0 + primefaces
14 respostas
C
cleiton_herrmann
Olá a todos, pessoal, tenho 2 p:commandbuttons em um formulario, uso JSF 2.0 + primefaces, um deles é pra fazer login, e está colocado em um panelgrid, e tenho outro panelgrid, com campos de filtros para pesquisar produtos, e nesse tbem tem outro commandbutton, mas quando eu estou digitando um filtro e teclo enter, sempre é executado a action de login, não tem como fazer um esquema assim: se estou nos campos de login e teclar enter, executa a action de login, e se estou nos campos de filtro de pesquisa e teclo enter, executa a action de pesquisa de produtos?
pois é Quindin, pesquisando por ai, eu ja tinha visto esse componente do rich, mas infelizmente o projeto aqui é só primefaces, mas valeu ai, acho q deve ter algo meio parecido no prime, tenho quase certeza q vai ser uma coisinha bem besta isso, como várias das minhas duvidas em jsf, kkkkk
pois é, já estou dando uma olhadinha… mas tah dificil, aquele exemplo q tem no showcase do prime nao ajuda muito… nao sei exatamente onde colocar essa tag <p:hot key… /> e quais atributos dela usar para quando eu pressiono o enter, se estiver nos campos de login executar a action do botão de login, e se estiver nos campos de pesquisa de produtos executar a action que o botão de pesquisar produtos executa…
C
cleiton_herrmann
bom pessoal, só pra constar, ja resolvi meu problema, e nao foi usando p:hotkey, pelo q eu entendi, ele define uma tecla de atalho para um determinado campo no formulario, e não o que será executado quando a tecla enter for pressionada, que é o que eu preciso… em locais diferentes no form executar determinada action quando teclar o enter
resolvi meu problema colocando mais de um h:form na minha pagina, fiz um h:form id=“frmLogin” com os campos de login, ai quando eu preciono enter em algum campo dentro desse form a action de login é executada, e o outro é o h:form id=“frmPesquisa” que tem dois botoes, um para pesquisar e outro para limpar os filtros, ai quando eu preciono enter, é executada a action de pesquisa pq o botão de pesquisa esta declarado antes do botão de limpar, mas deu certo, na verdade acho q essa é a unica solução…
C
cristianoassis
Tem como postar a solução ? A minha pesquisar esta assim, mas não consigo atualizar a página com o resultado da seleção.
<scripttype="text/javascript">functionclosePopUp(){
window.close();
}
</script><h:head><title>Buscaritens</title></h:head><h:body><h:form><!-- Titilo da aplicacao --><tablewidth="90%"align="center"><tr><td><strong><fontsize="5">Pesquisaritens</font></strong></td></tr></table></h:form><!-- Dados do form --><ui:insertname="conteudo"><h:form><p:dataTablevar="item"value="#{itemFace.list}"paginator="true"rows="10"selection="#{itemTabelaPrecoFace.selectedLinhaBusca}"selectionMode="single"onRowSelectUpdate="display"emptyMessage="Não há registros a exibir"style="font-size: 10px; background-color: lightblue"><f:facetname="header">Listadeitenscadastrados-Doubleclickparaselecionar
</f:facet><p:columnsortBy="#{item.codigo}"filterBy="#{item.codigo}"style=" font-size: 10px"><f:facetname="header"><h:outputTextvalue="Codigo"/></f:facet><h:outputTextvalue="#{item.codigo}"/></p:column><p:columnsortBy="#{item.descricao}"filterBy="#{item.descricao}"style=" font-size: 10px"><f:facetname="header"><h:outputTextvalue="Descricao"/></f:facet><h:outputTextvalue="#{item.descricao}"/></p:column><p:columnstyle="width:30px"><f:facetname="header"><h:outputTextvalue="Ação"style="font-size: 10px"/></f:facet><h:commandLinktitle="Selecionar registro"action="#{itemTabelaPrecoFace.doConfirmaBuscaItem}"id="bt_confirmar"onclick="window.close();"><p:graphicImagetitle="Selecionar registro"value="#{pageContext.servletContext.contextPath}/resources/imagens/confirmar.png"width="15"height="15"alt="Selecionar registro"/><f:setPropertyActionListenertarget="#{itemTabelaPrecoFace.selectedLinhaBusca}"value="#{item}"/></h:commandLink></p:column></p:dataTable><p:messages/></h:form></ui:insert></h:body>
C
cleiton_herrmann
cristianoassis, pelo q entendi do seu problema, nao tem muito a ver com o meu, mas me diga uma coisa, vc esta tentandando atualizar o q exatamente nessa pagina ? eu vi q vc tem um comandlink na tabela, que seta o objeto no managedbean e executa um metodo e tbem faz window.close(), mas não há nenhuma tag update definindo se algum componente será atualizado… eu vi q tem a tag onRowSelectUpdate=“display” mas esse display existe ? o q é ele ? explica melhor ai seu problema…
ah, nao esquece na proxima vez q postar código utilize esse botãozinho [Code] pra deixar seu código entre as tags {code}{/code} fica muito melhor pra gnt ler.
vlw t+
C
cristianoassis
Obrigado pelas dicas. Vou tentar explicar melhor.
Tenho essa tela para incluir os preços dos produtos :
Quando clico no botão pesquisar, abre o popup abaixo (até esta tudo funcionando legal) .
<htmlxmlns:p="http://primefaces.prime.com.tr/ui"xmlns="http://www.w3.org/1999/xhtml"xmlns:ui="http://java.sun.com/jsf/facelets"xmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core"><scripttype="text/javascript">functionclosePopUp(){
window.close();
}
</script><h:head><title>Buscaritens</title></h:head><h:body><h:form><!-- Titilo da aplicacao --><tablewidth="90%"align="center"><tr><td><strong><fontsize="5">Pesquisaritens</font></strong></td></tr></table></h:form><!-- Dados do form --><ui:insertname="conteudo"><h:form><p:dataTablevar="item"value="#{itemFace.list}"paginator="true"rows="10"selection="#{itemTabelaPrecoFace.selectedLinhaBusca}"selectionMode="single"onRowSelectUpdate="display"emptyMessage="Não há registros a exibir"style="font-size: 10px; background-color: lightblue"><f:facetname="header">Listadeitenscadastrados-Doubleclickparaselecionar
</f:facet><p:columnsortBy="#{item.codigo}"filterBy="#{item.codigo}"style=" font-size: 10px"><f:facetname="header"><h:outputTextvalue="Codigo"/></f:facet><h:outputTextvalue="#{item.codigo}"/></p:column><p:columnsortBy="#{item.descricao}"filterBy="#{item.descricao}"style=" font-size: 10px"><f:facetname="header"><h:outputTextvalue="Descricao"/></f:facet><h:outputTextvalue="#{item.descricao}"/></p:column><p:columnstyle="width:30px"><f:facetname="header"><h:outputTextvalue="Ação"style="font-size: 10px"/></f:facet><h:commandLinktitle="Selecionar registro"action="#{itemTabelaPrecoFace.doConfirmaBuscaItem}"id="bt_confirmar"onclick="window.close();"><p:graphicImagetitle="Selecionar registro"value="#{pageContext.servletContext.contextPath}/resources/imagens/onsys/confirmar.png"width="15"height="15"alt="Selecionar registro"/><f:setPropertyActionListenertarget="#{itemTabelaPrecoFace.selectedLinhaBusca}"value="#{item}"/></h:commandLink></p:column></p:dataTable><p:messages/></h:form></ui:insert></h:body></html>
O problema esta quando eu confirmo a seleção no popup, ele fecha, mas não atualiza o inputtext abaixo da tela principal (que chamou o popup).
ah tah, entendi, mas acho q nao vou conseguir te ajudar, pelo q vi, vc tah usando uns scripts pra abrir o popup, eu nunca usei dessa maneira, nao sei se vc esta usando algum framework tipo rich ou primefaces, eu uso primefaces, e pra fazer isso q vc faz, eu uso o componente p:dialog, e ele tem um atributo q posso usar pra atualizar componentes, o onCloseUpdate onde eu coloco o nome do componente que quero atualizar após fechar o dialog, se estiver ao seu alcance usar um framework assim, acho interessante, vai facilitar seu trabalho, agora no seu caso infelizmente nao sei oq vc poderia fazer pra atualizar o inputtext após fechar o popup sendo q vc esta usando script pra fechá-lo…
C
cristianoassis
Meu Camarada, foi uma ótima dica!!! Como utilizo o primefaces, consegui resolver meu problema com o componente p:dialog, não tinha pensado nisso. Muito obrigado !!!
C
cristianoassis
Meu Camarada, foi uma ótima dica!!! Como utilizo o primefaces, consegui resolver meu problema com o componente p:dialog, não tinha pensado nisso. Muito obrigado !!!
C
cristianoassis
So mais um detalhe amigo, caso possa me ajudar. Consegui fazer o popup com o componente p:diolog, mas o problema é que quando eu fecho o p:dilog os campos anteriores da tela são apagados. Sabe como posso evitar isso ? Segue abaixo o código da página.
Grato.
<?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"><html><ui:compositionxmlns:p="http://primefaces.prime.com.tr/ui"xmlns="http://www.w3.org/1999/xhtml"xmlns:ui="http://java.sun.com/jsf/facelets"template="../../../base.xhtml"xmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core"><ui:definename="title"></ui:define><ui:definename="topo"></ui:define><ui:definename="content"><scripttype="text/javascript"src="../../../resources/js/jquery.price_format.js"></script><h:body><p:panelstyle="width: 910px; margin: 0 auto; min-height: 500px; font-size: 12px"><h:panelGridcolumns="1"style="width: 100%;"><ui:insertname="usuario"></ui:insert><ui:insertname="conteudo"><h:formid="fmEditar"><p:focusfor="idCodigo"/><p:panelheader="Incluir item"style="background-color: #dddddd"><table><tr><h:commandLinkaction="#{itemFace.doFinishCreateItem(usuarioFace.loggedUser.empresa.codigo)}"title="Salvar"id="bt_salvar"><p:graphicImagevalue="#{pageContext.servletContext.contextPath}/resources/imagens/confirmar.png"width="20"height="20"alt="Salvar"/></h:commandLink> <h:commandLinkimmediate="true"action="#{itemFace.doListItens}"title="Cancelar"id="bt_cancelar"><p:graphicImagevalue="#{pageContext.servletContext.contextPath}/resources/imagens/cancelar.png"width="20"height="20"alt="Cancelar"/></h:commandLink></tr><tr><td>Código</td><td><p:inputTextid="idCodigo"value="#{itemFace.selectedBean.codigo}"size="20"/></td></tr><tr><td>Descrição</td><td><p:inputTextvalue="#{itemFace.selectedBean.descricao}"size="60"/></td></tr><tr><td>UN</td><td><h:selectOneMenustyle="width: 300px"value="#{itemFace.selectedBean.unidademedida}"><f:selectItemsvar="itemSel"itemLabel="#{itemSel.descricao}"itemValue="#{itemSel}"value="#{itemFace.allUnidadeMedida}"/><f:converterconverterId="unidadeMedidaConverter"/></h:selectOneMenu><p:commandButtonprocess="@this"type="button"value="..."onclick="dlgun.show()"style=" height: 25px; width:35px"/></td></tr><tr><td>Preço unitario </td><td><p:inputTextvalue="#{itemFace.selectedBean.preco}"styleClass="monetario"style="text-align: right"><f:convertNumbertype="currency"locale="pt_BR"/></p:inputText></td></tr></table><p:messages/></p:panel></h:form></ui:insert></h:panelGrid></p:panel></h:body><p:dialogid="idPesquisa"widgetVar="dlgun"header="Busca unidade de medida"width="525"height="400"showEffect="explode"hideEffect="explode"><h:form><p:dataTablevar="item"value="#{unidadeMedidaFace.list}"paginator="true"rows="10"selection="#{itemFace.selectedLinhaBuscaUn}"selectionMode="single"onRowSelectUpdate="display"emptyMessage="Não há registros a exibir"style="font-size: 10px; background-color: lightblue"><f:facetname="header">
Lista de unidades cadastradas
</f:facet><p:columnsortBy="#{item.un}"filterBy="#{item.un}"style=" font-size: 10px"><f:facetname="header"><h:outputTextvalue="Unidade"/></f:facet><h:outputTextvalue="#{item.un}"/></p:column><p:columnsortBy="#{item.descricao}"filterBy="#{item.descricao}"style=" font-size: 10px"><f:facetname="header"><h:outputTextvalue="Descrição"/></f:facet><h:outputTextvalue="#{item.descricao}"/></p:column><p:columnstyle="width:30px"><f:facetname="header"><h:outputTextvalue="Ação"style="font-size: 10px"/></f:facet><h:commandLinktitle="Selecionar registro"action="#{itemFace.doConfirmaBuscaUn}"id="bt_confirmar"onclick="window.close();"><p:graphicImagetitle="Selecionar registro"value="#{pageContext.servletContext.contextPath}/resources/imagens/onsys/confirmar.png"width="15"height="15"alt="Selecionar registro"/><f:setPropertyActionListenertarget="#{itemFace.selectedLinhaBuscaUn}"value="#{item}"/></h:commandLink></p:column></p:dataTable></h:form></p:dialog><scripttype="text/javascript">jQuery('.monetario').priceFormat({prefix:'R$ '});</script><scripttype="text/javascript">jQuery('.decimal').priceFormat({prefix:' '});</script></ui:define></ui:composition></html>
C
cleiton_herrmann
cara eu acho q tem algo a ver com essa linha abaixo, eu nunca usei tbem process="@this" nem sei o que isso significa, mas eu desconfio q ela submeta todo o formulario né ? me corrija se estiver errado…
outra coisa q pode estar causando seu problema, é se o seu managedbean estiver em escopo request ResquestScope, ai quando vc fecha o dialog e atualiza a pagina, ele acaba por zerar o seu managedbean, mas isso se a primeria frase estiver correta, pra q serve aquela tag process com valor @this ?