Pessoal, estou com uma dificuldade e não entendo onde estou errando, preciso realizar uma busca (lista) buscando apenas pelo código de um campo.
Mas ao tentar abrir o jsf ele já me apresenta o erro:
Not all named parameters have been set: [cod_experimento] [select u from Tratamento u where u.cod_experimento = :cod_experimento]
Como se o código não estivesse sendo setado ou tivesse nulo, entretando removendo a impressão da listagem, o link aparece normalmente.
Vejam os meus códigos:
Experimento_busca.xhtml
<h:form id="listagem">
<h:dataTable value="#{experimentoBean.buscarPorNome}" var="experimento" >
<h:column>
<f:facet name="header">Nome</f:facet>
<h:commandLink value="#{experimentoBean.selecionado.cod_experimento}" action="#{tratamentoBean.buscarPorExperimento}" immediate="true">
<f:param value="#{experimentoBean.selecionado.cod_experimento}" name="cod_experimento"/>
</h:commandLink>
</h:column>
<h:column>
<f:facet name="header">Quant Tratamento</f:facet>
#{experimentoBean.selecionado.quantTratamento}
</h:column>
<h:column>
<f:facet name="header">Responsavel</f:facet>
#{experimentoBean.selecionado.responsavel}
</h:column>
</h:dataTable>
<h:dataTable value="#{tratamentoBean.buscarPorExperimento}" var="tratamento" rendered="#{!empty tratamentoBean.buscarPorExperimento}">
<h:column>
<f:facet name="header">Nome</f:facet>
<h:outputText value="#{tratamento.descricao_trat}"/>
</h:column>
</h:dataTable>
</h:form>
A última datatable que apresenta erro, se remover aparece o link, mas também não apresenta o resultado da consulta.
No meu Bean:
@ManagedBean(name = "tratamentoBean")
@RequestScoped
public class TratamentoBean {
private Tratamento selecionado = new Tratamento();
private List<Tratamento> lista;
private List<Tratamento> buscarPorExperimento;
private Integer cod_experimento;
private String codigo;
public List<Tratamento> getBuscarPorExperimento() {
this.codigo = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("cod_experimento");
this.cod_experimento = (codigo == null || codigo.trim().length() == 0) ? 0 : Integer.parseInt(codigo);
TratamentoRN tratamentoRN = new TratamentoRN();
this.buscarPorExperimento = tratamentoRN.buscarPorExperimento(cod_experimento);
return buscarPorExperimento;
}
Por favor me ajudem, não sei onde está o erro.