Todas as vezes que eu usei o dataTable do jsf eu sempre mostrei todo o conteudo da tabela, agora to precisando mostrar o resultado de uma consulta que usa como parametro um campo do meu jsp. Ex:
tenho um campo “Palavra chave” e um botão. Ao clicar no botão deve aparecer no dataTable os registros selecionados apartir da palavra digitada no campo.
Eu tava tentando fazer algo assim:
<h:inputText id="palavraChave"/>
ai tenho um botao “Buscar”, ao clicar nele o devera aparecer um datatable com os registros que correspondentes a palavra que foi digitada. Tentei colocar no Handler algo assim:
public void findByKey(ActionEvent evt){
UIComponent link = evt.getComponent();
UIParameter p = (UIParameter) link.findComponent("palavraChave");
String id = p.getValue().toString();
List<Contato> retorno = contatoService.findByKey(id);// essa linha me retorna a consulta que eu quero
}
mas ai não sei como mostrar o resultado na datatable.
Olha, o problema é que você não está colocando os valores da variável retorno em lugar nenhum.
Tente algo assim:
publicSeuManagedBean{privateList<Contato>contatos;publicSeuManagedBean(){contatos=newArrayList<Contato>();}publicvoidfindByKey(ActionEventevt){UIComponentlink=evt.getComponent();UIParameterp=(UIParameter)link.findComponent("palavraChave");Stringid=p.getValue().toString();contatos=contatoService.findByKey(id);// essa linha me retorna a consulta que eu quero }//Get/Set contatos}
<?xml version="1.0" encoding="ISO-8859-1" ?><jsp:rootversion="1.2"xmlns:jsp="http://java.sun.com/JSP/Page"xmlns:f="http://java.sun.com/jsf/core"xmlns:h="http://java.sun.com/jsf/html"xmlns:ice="http://www.icesoft.com/icefaces/component"><jsp:directive.pagecontentType="text/html;charset=ISO-8859-1"pageEncoding="ISO-8859-1"/><f:view><ice:outputDeclarationdoctypeRoot="HTML"doctypePublic="-//W3C//DTD HTML 4.01 Transitional//EN"doctypeSystem="http://www.w3.org/TR/html4/loose.dtd"/><html><head><title><ice:outputTextvalue="ICEfaces, Ajax for Java EE"/></title><ice:outputStylehref="./xmlhttp/css/xp/xp.css"/></head><body><h:inputTextid="chave"value="#{contatoHandler.nome}"/><h:commandButtonaction="#{contatoHandler.testa}"value="buscar"actionListener="#{contatoHandler.testa}"></h:commandButton><h:dataTablevalue="#{contatoHandler.contatos}"var="cont"><h:column><f:facetname="header"><h:outputTextvalue="nome"/></f:facet><h:outputTextvalue="#{cont.nome}"/></h:column></h:dataTable></body></html></f:view></jsp:root>
O que ta ocorrendo é que quando clico na verdade ele não passa pelo metodo no Bean, no faces config não tem muita coisa porque quem ta gerenciando meus beans é o Spring
yorgan
Olha, pelo visto você esqueceu de abrir a tag <h:form>.
Sem ela a JSP não irá chamar o MB.
Tente a JSP assim:
<?xml version="1.0" encoding="ISO-8859-1" ?><jsp:rootversion="1.2"xmlns:jsp="http://java.sun.com/JSP/Page"xmlns:f="http://java.sun.com/jsf/core"xmlns:h="http://java.sun.com/jsf/html"xmlns:ice="http://www.icesoft.com/icefaces/component"><jsp:directive.pagecontentType="text/html;charset=ISO-8859-1"pageEncoding="ISO-8859-1"/><f:view><ice:outputDeclarationdoctypeRoot="HTML"doctypePublic="-//W3C//DTD HTML 4.01 Transitional//EN"doctypeSystem="http://www.w3.org/TR/html4/loose.dtd"/><html><head><title><ice:outputTextvalue="ICEfaces, Ajax for Java EE"/></title><ice:outputStylehref="./xmlhttp/css/xp/xp.css"/></head><body><h:form><h:inputTextid="chave"value="#{contatoHandler.nome}"/><h:commandButtonaction="#{contatoHandler.testa}"value="buscar"actionListener="#{contatoHandler.testa}"></h:commandButton><h:dataTablevalue="#{contatoHandler.contatos}"var="cont"><h:column><f:facetname="header"><h:outputTextvalue="nome"/></f:facet><h:outputTextvalue="#{cont.nome}"/></h:column></h:dataTable></h:form></body></html></f:view></jsp:root>