Dúvida com atributos na Session Servlet

9 respostas
C

Guj's tenho uma dúvida acho que vai ser fácil de ser esclarecida,

Gostaria de saber se a minha lógica está certa, ou se tem uma forma melhor de fazer.

Primeiro listo alguns itens na minha página jsp, depois preciso clicar no icone visualizar e obter o id desse item clicado.

Fazendo da forma abaixo está me retornando null.

Esse servlet uso para listar a monitoria, e 'aguardar' essa lista:

ServletListaMonitoria:
protected void doRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
    try {
     	  List <MonitoriaOperador> lista = new ArrayList<MonitoriaOperador>();
    	   MonitoriaOperadorDaoMysql mDao = new MonitoriaOperadorDaoMysql();
			
			lista = mDao.listarMonitoriaOperador();
			HttpSession session = request.getSession(true);
			session.setAttribute("listaMonitoria", lista);
			
	        request.getRequestDispatcher("VisualizaFeedback.jsp").forward(request, response);
	
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
   
	}
Página jsp:
<table id="tabelaMonitoria" class="ui-widget ui-widget-content"> 
	<tr  class="ui-widget-header ">
		<td>Id</td>
		<td>Data</td>
		<td>Titulo:</td>
		<td>Comentário:</td>
        <th>View </th>
        <th>Edit </th>
        <th>Delete </th>
		
	</tr>
	<%
		List<MonitoriaOperador> monitoria = (List<MonitoriaOperador>) request.getSession(false).getAttribute("listaMonitoria");

	if(monitoria!=null)
	for (MonitoriaOperador m : monitoria) {
	%>
	<tr >
		<td><%= m.getIdMonitoria()  %></td>
		<td><%= m.getData()  %></td>
		<td><%= m.getTitulo()  %></td>
		<td><%= m.getComentario()  %></td>
		<td><a href="ServletFeedback"><img name="view-<%=m.getIdMonitoria()%>" id="view-<%=m.getIdMonitoria()%>" src="images/search.png" width="16" height="16" border="0px" alt="Visualizar"></td>
		<td><a href=""><img src="images/edit.png" width="16" height="16" border="0px" alt="Editar"></td>
		<td><a href=""><img src="images/trash.gif" width="16" height="16" border="0px" alt="Excluir"></td>
		</tr>

	</tr>
	<%
		}
	%>

</table>

ServletFeedback:

protected void doRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		List <MonitoriaOperador> lista = (List<MonitoriaOperador>)request.getSession(false).getAttribute("listaMonitoria");
	//	System.out.println("lista de monitorias"+lista);
	    	
	    if(lista != null){
	        	for (MonitoriaOperador m: lista){
	      		String idmonitoria = request.getParameter("view-"+m.getIdMonitoria());
	      		System.out.println(idmonitoria);
	        	}
	        	
	        	
	        }
	}

9 Respostas

Hebert_Coelho

ao invés de utilizar session, pq vc não coloca no request?

Session pode lotar a memória da sua máquina.

C

jakefrog

eu tentei usar só o request, o problema é no meu ServletFeedback a lista vai me retornar NULL. diferentemente do session.

no caso no session a lista não é nula porém o item da lista está nulo.

.. List <MonitoriaOperador> lista = (List<MonitoriaOperador>)request.getSession(false).getAttribute("listaMonitoria"); // retorno é null

Hebert_Coelho

Ma você também alterou para ao invés de inserir na session, inserir no request?

C

Sim sim…

... lista = mDao.listarMonitoriaOperador(); // HttpSession session = request.getSession(true); request.setAttribute("listaMonitoria", lista);

Hebert_Coelho

Ops, só agora que eu vi. Vc nao alterou isso aqui oh:

request.getSession(false).getAttribute("listaMonitoria");

Repare no segundo código que vc postou. continua do mesmo modo.

Deveria ser:

request.getAttribute("listaMonitoria");
C

Cara eu já alterei tudo,
Fazendo via request ele lista normalmente, porém eu não consigo legar esse atributo 'listaMonitoria' no meu outro servlet.

view plaincopy to clipboardprint? ServletListaMonitoria:
protected void doRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
        // TODO Auto-generated method stub  
    try {  
          List <MonitoriaOperador> lista = new ArrayList<MonitoriaOperador>();  
           MonitoriaOperadorDaoMysql mDao = new MonitoriaOperadorDaoMysql();  
              
            lista = mDao.listarMonitoriaOperador();  
     
            request.setAttribute("listaMonitoria", lista);  
              
            request.getRequestDispatcher("VisualizaFeedback.jsp").forward(request, response);  
      
              
        } catch (ClassNotFoundException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (SQLException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
     
    }

Página jsp:

<table id="tabelaMonitoria" class="ui-widget ui-widget-content">   
    <tr  class="ui-widget-header ">  
        <td>Id</td>  
        <td>Data</td>  
        <td>Titulo:</td>  
        <td>Comentário:</td>  
        <th>View </th>  
        <th>Edit </th>  
        <th>Delete </th>  
          
    </tr>  
    <%  
        List<MonitoriaOperador> monitoria = (List<MonitoriaOperador>) request.getAttribute("listaMonitoria");  
  
    if(monitoria!=null)  
    for (MonitoriaOperador m : monitoria) {  
    %>  
    <tr >  
        <td><%= m.getIdMonitoria()  %></td>  
        <td><%= m.getData()  %></td>  
        <td><%= m.getTitulo()  %></td>  
        <td><%= m.getComentario()  %></td>  
        <td><a href="ServletFeedback"><img name="view-<%=m.getIdMonitoria()%>" id="view-<%=m.getIdMonitoria()%>" src="images/search.png" width="16" height="16" border="0px" alt="Visualizar"></td>  
        <td><a href=""><img src="images/edit.png" width="16" height="16" border="0px" alt="Editar"></td>  
        <td><a href=""><img src="images/trash.gif" width="16" height="16" border="0px" alt="Excluir"></td>  
        </tr>  
  
    </tr>  
    <%  
        }  
    %>  
  
</table>

ServletFeedback:

p
rotected void doRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
        // TODO Auto-generated method stub  
        List <MonitoriaOperador> lista = (List<MonitoriaOperador>)request.getAttribute("listaMonitoria");  
    //  System.out.println("lista de monitorias"+lista);  
              
        if(lista != null){  
                for (MonitoriaOperador m: lista){  
                String idmonitoria = request.getParameter("view-"+m.getIdMonitoria());  
                System.out.println(idmonitoria);  
                }  
                  
                  
            }  
    }
C

@jakefrog
Vc consegue verificar onde está o erro?

Hebert_Coelho

A única coisa que posso te indicar é vc ter a certeza de que toda vez antes do método de listar for chamado, o método de colocar a lista no request está sendo executada.

request.setAttribute(“listaMonitoria”, lista);

Pq é estranho funcionar de um lado e do outro não. O.o

C

Cara, acho que sei onde está o problema..

fazendo via session, ele me retorna o ID da monitoria, ou seja, a lista está chegando até o servlet.

protected void doRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
        // TODO Auto-generated method stub  
        List <MonitoriaOperador> lista = (List<MonitoriaOperador>)request.getSession(false).getAttribute("listaMonitoria");  
 
                for (MonitoriaOperador m: lista){  
                System.out.println(m.getIdMonitoria());  
                }  
                  
                  
            }  
    }

o problema é o atributo ( meu checkbox ) que não está chegando: id="view-<%=m.getIdMonitoria()%>"

i
f(monitoria!=null)  
    for (MonitoriaOperador m : monitoria) {  
    %>  
    <tr >  
        <td><%= m.getIdMonitoria()  %></td>  
        <td><%= m.getData()  %></td>  
        <td><%= m.getTitulo()  %></td>  
        <td><%= m.getComentario()  %></td>  
        <td><a href="ServletFeedback"><img name="view-<%=m.getIdMonitoria()%>" id="view-<%=m.getIdMonitoria()%>" src="images/search.png" width="16" height="16" border="0px" alt="Visualizar"></td>  
        <td><a href=""><img src="images/edit.png" width="16" height="16" border="0px" alt="Editar"></td>  
        <td><a href=""><img src="images/trash.gif" width="16" height="16" border="0px" alt="Excluir"></td>  
        </tr>  
  
    </tr>

Ele retorna Null.

String idmonitoria = request.getParameter("view-"+m.getIdMonitoria());

Não sei pq.

Criado 14 de novembro de 2011
Ultima resposta 16 de nov. de 2011
Respostas 9
Participantes 2