Eu quero fazer com que aparece a lista dos nomes semelhantes.
Ex: Eu quero Alexandre:
Logo é para Lista todos os Alexandres: Alexandre Lima, Alexandre Menezes e etc
Só que quando eu chamo o método lista por nomes o JSF que o metodo tem que ser String não pode ser List…
Eu como eu faço esse método sendo String?
Alguem pode mi ajudar
VLW!!
Como está seu método atualmente?
Assim:
Bean:
[code]public List pesquisaByNomes(){
AlunoFacadeImpl alunoService = new AlunoFacadeImpl();
List lista = alunoService.procuraByNomes(this.aluno.getNome());
return lista;
}[/code]
Façade:
[code]public List pesquisaAlunosByNome(String nome) {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
alunoDAO = new AlunoDAO(session, Aluno.class);
List<Aluno> lista = this.alunoDAO.pesquisaAlunos(nome);
tx.commit();
session.close();
return lista;
}[/code]
DAO:
[code]@SuppressWarnings(“unchecked”)
public List pesquisaAlunos(String nome){
Criteria c = session.createCriteria(Aluno.class);
c.add(Restrictions.like(“nome”, “%” + nome + “%”));
@SuppressWarnings("rawtypes")
List resultado = c.list();
return resultado;
}[/code]
Na hora de listar, coloque assim
List<String> resultado = new ArrayList<Aluno>();
for(Aluno aluno : alunos){
resultado.add(aluno.getNome());
}
[quote=jakefrog]Na hora de listar, coloque assim
List<String> resultado = new ArrayList<Aluno>();
for(Aluno aluno : alunos){
resultado.add(aluno.getNome());
}
[/quote]
Coloca isso no Façade?
Oq é essa variável alunos ?
Qual vai ser o retorno?
alunos é o retorno da sua consulta, ela não retorna um List? Eu chamei de alunos.
Por mim você coloca isso no seu ManagedBean, após chamar seu EJB.
[quote=jakefrog]alunos é o retorno da sua consulta, ela não retorna um List? Eu chamei de alunos.
Por mim você coloca isso no seu ManagedBean, após chamar seu EJB. [/quote]
OK
Mais aparece isso:
Type mismatch: cannot convert from ArrayList<Aluno> to List <String>
Nessa linha:
List<String> resultado = new ArrayList<Aluno>();
Escrevi errado, é só trocar para List resultado = new ArrayList();
OK!
Agora meu Bean ta assim:
public List<Aluno> pesquisaByNomes(){
AlunoFacadeImpl alunoService = new AlunoFacadeImpl();
List<Aluno> lista = alunoService.procuraByNomes(this.aluno.getNome());
List<String> resultado = new ArrayList<String>();
for(Aluno aluno : lista){
resultado.add(aluno.getNome());
}
return lista;
}
E fica aparecendo isso no meu .jsp:
Method must signature "String method()" but has signature "List method()"
Tem algum problema ainda?
O seu método da JSP tem que retornar uma lista de String.
Como assim?
O meu .jsp ta assim:
[code]
Pesquisa de Alunos
<h:panelGrid columns=“2”>
<h:outputLabel for="Nome" value="Digite o nome: " />
<h:inputText id="Nome" value="#{alunoBean.aluno.nome}" style=" width : 321px;" />
<h:commandButton value="Pesquisar" action="#{alunoBean.pesquisaByNomes}" styleClass="botoes"/>
</h:panelGrid>
<h:panelGrid columnClasses="acent">
<rich:datascroller for="table" maxPages="5" />
<rich:dataTable value="#{alunoBean.alunos}" var="al" id="table" rows="10">
<rich:column >
<f:facet name="header">
<h:outputText value="Aluno " />
</f:facet>
<h:outputText value="#{alunoBean.aluno.nome}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Turma" />
</f:facet>
<h:outputText value="#{alunoBean.aluno.turma}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Celular" />
</f:facet>
<h:outputText value="#{alunoBean.aluno.telCel}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Responsavel" />
</f:facet>
<h:outputText value="#{alunoBean.aluno.responsavel}" />
</rich:column>
</rich:dataTable>
<rich:datascroller for="table" maxPages="5" />
</h:panelGrid>
</div>
</fieldset>[/code]
Cara, agora não entendi mais nada.
Você quer oq? Que o método retorne String? Ou ele aceite String como parâmetro? Ou oq? O.o
[quote=jakefrog]Cara, agora não entendi mais nada.
Você quer oq? Que o método retorne String? Ou ele aceite String como parâmetro? Ou oq? O.o[/quote]
Cara eu quero que quando o usuário digita um nome ele liste todos os nomes semelhantes. Ex: Alexandre ele liste todos os Alexandre’s…
E eu não to conseguindo fazer isso… Eu não sei oq ele deve retornar, mais parece que o button não aceita um retorno List…
Entendeu?
Seu método de pesquisa deve ser void e você precisa setar na variável alunos o resultado do seu bean.
Vc está se referindo ao DAO que deve ser void ???
Eu consegui fazer!! ![:smiley: :smiley:](//www.guj.com.br/images/emoji/twitter/smiley.png?v=6)
Obrigado!! Vcs 2 mi ajudarão bastante a encontra meu erro…
O metodo ficou assim:
[code]public String pesquisaByNomes(){
AlunoFacadeImpl alunoService = new AlunoFacadeImpl();
List lista = alunoService.procuraByNomes(this.aluno.getNome());
List resultado = new ArrayList();
for(Aluno aluno : lista){
resultado.add(aluno.getNome());
}
return “sucesso”;
}[/code]
O problema estava sendo só o retorno… o metodo tem que ser o String se não o na pagina .jsp acusa erro… (Eu acho que é isso pelo mesno…rsrsrs)
Vlw!! Mesmo
Só uma sugestão.Pq ao invés disso:
c.add(Restrictions.like("nome", "%" + nome + "%"));
Vc não usa assim?
c.add(Restrictions.ilike("nome", nome,MatchMode.ANYWHERE));
Mais elegante…
Não. O método do managed bean tem que ser void e no final do método você seta em uma variável do managed o resultado que está retornando. Depois na página é só chamar aquela variável.
[quote=raf4ever]Só uma sugestão.Pq ao invés disso:
c.add(Restrictions.like("nome", "%" + nome + "%"));
Vc não usa assim?
c.add(Restrictions.ilike("nome", nome,MatchMode.ANYWHERE));
Mais elegante…
[/quote]
Oq isso significa?
MatchMode.ANYWHERE
Mais na pagina pede um método String…
Como faço para ele aceitar?