Jsp Beans

Bom pessoal to com um problema olhem meu codigo

<jsp:useBean id="pacientes" scope="page" class="servicos.carregaPacientes"/>
<jsp:useBean id="prontuarios" scope="page" class="servicos.carregaProntuarios"/>
                        
                        
                        <c:forEach items="${pacientes.todos}" var="paciente">
                            <tr class="${paciente.id % 2 == 0 ? 'linha2' : 'linha1' }">
                                <td>${paciente.id}</td>
                                <td>${paciente.nome}</td>
                                <td>${paciente.dataNasc}</td>
                                <td>${paciente.cpf}</td>
                                <td>${paciente.telefone}</td>
                                <td>
                                    <c:forEach items="${prontuarios.todosPacientes(paciente.id)}" var="prontuario">
                                      ${prontuario.id}
                                  </c:forEach>
                                    
                                </td>
                            </tr>
                        </c:forEach>
public class carregaProntuarios
{
   public List<Prontuario> getTodosPacientes(int id) {
        
        List<Prontuario> lista = new ArrayList<Prontuario>();
        ProntuarioDAO dao = null;

        try {
            dao = new ProntuarioDAO();
            lista = dao.listarTodosPaciente(id);
        } catch ( SQLException exc ) {
            exc.printStackTrace();
        } finally {
            if ( dao != null ) {
                try {
                    dao.fecharConexao();
                } catch ( SQLException exc ) {
                    exc.printStackTrace();
                }
            }
        }

        return lista;

    }
    
}

ao usar isso recebo a seguinte mensagem

[code]type Exception report

message

descriptionThe server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: javax.el.MethodNotFoundException: Method todosPacientes not found
root cause

javax.el.MethodNotFoundException: Method todosPacientes not found[/code]

o problema eh, não consigo enviar um parametro no jsp beans la no items para a classe se eu remover o parametro int funciona perfeitamente, so que ai nao consigo filtrar pelo id que preciso

assim funciona

[code]public class carregaProntuarios
{
public List getTodosPacientes() {

    List<Prontuario> lista = new ArrayList<Prontuario>();
    ProntuarioDAO dao = null;

    try {
        dao = new ProntuarioDAO();
        lista = dao.listarTodosPaciente(1);
    } catch ( SQLException exc ) {
        exc.printStackTrace();
    } finally {
        if ( dao != null ) {
            try {
                dao.fecharConexao();
            } catch ( SQLException exc ) {
                exc.printStackTrace();
            }
        }
    }

    return lista;

}

}[/code]

e la no c:foreach

<c:forEach items="${prontuarios.todosPacientes}" var="prontuario"> ${prontuario.id} </c:forEach>

como voces podem ver eu tiro o parametro id que preciso e coloco 1 pra chama a funcao pra seleciona as coisas do banco

como posso resolve isso? precisso pasar esse id para a classe =/

Meu amigo, acredito que não seja possível você enviar parâmetros via JSTL…

Te aconselho enviar a sua requisição para um Servlet e aí sim recuperar os dados já com o parâmetro setado… entendeu?

Uma observação, sua classe está com o nome de uma ação, e também está começando com letra minúscula!

mude isso

De

carregaProntuarios

Para
CargaProntuarios.

Ou seja o nome da classe deve ser um Substantivo!

Veja, no tocante a sua dúvida, acredito não ser um bom design, dentro de um for each chamar uma ação de um servlet para cada linha passando o id do paciente!

por que voce não faz assim:

Crie um objeto que chamado Prontuario, que possue uma composição com o paciente, ou seja um Paciente tem um Prontuário, também em Prontuário, voce pode ter uma lista de “Ocorrências”, desta forma voce pode ter um metodo no seu DAO, que monta um Paciente com seu Prontuário, esse metodo pode ser segundo o protótipo:

private Paciente montarProntuario(Paciente paciente){
//busca no banco todas as ocorrencias
//seta em Prontuario
//seta o Prontuario em paciente
//retorna o paciente

}

Isto é só um exemplo, cuja a finalidade é dizer que voce deveria montar seu gráfico de objetos antes de ir para a tela, pois a tela vai listar “todos” os prontuários dos pacientes, desta forma voce poderia ter um for each intero para cada paciente mostrar o Prontuario, pois seu objeto estaria pronto!

Porém se voce quiser mesmo para cada linha, chamar um servlet vai ter que usar um evento java script, pois o Jsp está sendo processado no servidor, e quando a pagina for renderizado, o for each ja foi executado, ae então teria que no onload, chamar um java script, e então manipular o event onclick do input disparar o Servlet, passando por exemplo o value de um hidden…

Veja que isso cheira a gambiarra!