Redirecionamento dentro do método

2 respostas
T

Prezados voltei com mais dúvidas! É o seguinte, tenho uma classe que faz uma busca no banco e popula um combo box. Só que se os parametros passados não retornarem nada do banco é necessário que eu faça um redirecionamento para outra página passando a data como parametro. Como se faz um redirecionamento dentro de um método de uma simples classe????
Abaixo segue o código:

package PaginasJsp;

import java.util.*;
import java.io.*;
import java.sql.*;
import java.sql.PreparedStatement;

public class SelectEdita {
  
   protected static String retorno = "";
   
   protected static String pageSelect(String data, int sala, int turno) {
      
      StringBuffer html = new StringBuffer();
                     
      html.append("<select name=\"esc_servico\">");
      
      html.append("<option value=\"0:0:"+ data + ":" + sala + ":" + turno + "\">");
              
   try {
      
      //Cria conexão com a base de dados
         
      Connection con = DataConnect.connectDb();
      
      String sql = "select s.cd_servico as scd_servico, s1.cd_servico as cd_servico, s1.ds_servico as ds_servico, e.cd_escala as cd_escala, " +
                   "e.cd_sal_cir as cd_sal_cir, e.tp_turno as tp_turno " +
                   "from   dbamv.escala_cirurgia e, dbamv.servico s, dbamv.servico s1 " +
                   "where e.dt_escala = ? " +
                   "and e.cd_sal_cir = ? " +
                   "and e.tp_turno = ? " +
                   "and e.cd_servico = s.cd_servico(+) " +
                   "and s1.sn_pre_internacao = 'S'";
      
      PreparedStatement stmt = con.prepareStatement(sql);
             
        ResultSet rs = null;
        
        stmt.setString(1,data);
        stmt.setInt(2,sala);
        stmt.setInt(3,turno);
        
        //faz primeira busca no banco de dados
        
        rs = stmt.executeQuery();
        
        if (rs.next() == false){
                   
########AQUI É QUE EU PRECISO FAZER O REDIRECIONAMENTO#####
            
        } else {        
        
             while (rs.next()){
            
             int cd_escala = rs.getInt("cd_escala");
             int ecd_servico = rs.getInt("cd_servico");
             int scd_servico = rs.getInt("scd_servico");
             String sds_servico = rs.getString("ds_servico");
                                                             
              html.append("<option value=\"");
              html.append(cd_escala);
              html.append(":"+ecd_servico);
              html.append(":"+data);
              html.append(":"+sala);
              html.append(":"+turno);
              html.append("\"");                 
                                                                                          
              if ( scd_servico == ecd_servico){                
              html.append(" selected");
              } 
                                       
              html.append(">");
              html.append(sds_servico);
              }          
                
        }
        rs.close();
   //tenta fechar a conexão com o banco de dados
      
   try {
            
    con.close();
      
      } catch(Exception e)  {
           
      e.printStackTrace();
            
      }
   //pega erro (se houver na query)
            
  	 } catch(Exception e) {
      
     e.printStackTrace();
     
   	}
  //fecha select
   html.append("</select>");      

   retorno = html.toString();
    
   return retorno;
   
   }
 
}

2 Respostas

M

Opa,

simplesmente não faz, que terá que fazer isto é quem chamou esta classe, o máximo que ela pode fazer é lançar uma Exception, como por exemplo IllegalArgumentException.

:okok:

T

Suspeitei desde o princípio e assim o fiz. Retornei uma String chamada null e da classe que instancia esse método eu fiz o redirecionamento como segue abaixo:

package PaginasJsp;

import java.util.*;
import java.io.*;
import java.sql.*;
import java.sql.PreparedStatement;

public class SelectEdita {
  
   protected static String retorno = "";
   
   protected static String pageSelect(String data, int sala, int turno) {
      
      StringBuffer html = new StringBuffer();
                     
     
              
   try {
      
      //Cria conexão com a base de dados
         
      Connection con = DataConnect.connectDb();
      
      String sql = "select s.cd_servico as scd_servico, s1.cd_servico as cd_servico, s1.ds_servico as ds_servico, e.cd_escala as cd_escala, " +
                   "e.cd_sal_cir as cd_sal_cir, e.tp_turno as tp_turno " +
                   "from   dbamv.escala_cirurgia e, dbamv.servico s, dbamv.servico s1 " +
                   "where e.dt_escala = ? " +
                   "and e.cd_sal_cir = ? " +
                   "and e.tp_turno = ? " +
                   "and e.cd_servico = s.cd_servico(+) " +
                   "and s1.sn_pre_internacao = 'S'";
      
      PreparedStatement stmt = con.prepareStatement(sql);
             
        ResultSet rs = null;
        
        stmt.setString(1,data);
        stmt.setInt(2,sala);
        stmt.setInt(3,turno);
        
        //faz primeira busca no banco de dados
        
        rs = stmt.executeQuery();
        
        if (rs.next() == false){
                   
         html.append("null");
            
        } else {        
        
             html.append("<select name=\"esc_servico\">");
      
             html.append("<option value=\"0:0:"+ data + ":" + sala + ":" + turno + "\">");
            
             while (rs.next()){
            
             int cd_escala = rs.getInt("cd_escala");
             int ecd_servico = rs.getInt("cd_servico");
             int scd_servico = rs.getInt("scd_servico");
             String sds_servico = rs.getString("ds_servico");
                                                             
              html.append("<option value=\"");
              html.append(cd_escala);
              html.append(":"+ecd_servico);
              html.append(":"+data);
              html.append(":"+sala);
              html.append(":"+turno);
              html.append("\"");                 
                                                                                          
              if ( scd_servico == ecd_servico){                
              html.append(" selected");
              } 
                                       
              html.append(">");
              html.append(sds_servico);
              }      
             
             
              html.append("</select>"); 
                
        }
        rs.close();
   //tenta fechar a conexão com o banco de dados
      
   try {
            
    con.close();
      
      } catch(Exception e)  {
           
      e.printStackTrace();
            
      }
   //pega erro (se houver na query)
            
  	 } catch(Exception e) {
      
     e.printStackTrace();
     
   	}
  //fecha select
       

   retorno = html.toString();
    
   return retorno;
   
   }
 
}

E tratei o retorno na outra classe como segue abaixo

package PaginasJsp;

import java.util.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;

public class EditaCC extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)


throws ServletException, IOException {

  
PrintWriter out = response.getWriter();
response.setContentType("text/html");

  String dt_serv = request.getParameter("dt_serv");


	//Cria objeto header

	Header head = new Header();

	//Printa o header da página
	
	out.println(head.pageHead());
	
	//Cria objeto navegador
	
        Navig navega = new Navig();
	
	//Printa o navegador
	
	out.println(Navig.pageMenu(dt_serv));
		
	//Cria o objeto data
	
	EccData dtora = new EccData();
	
        //Cria o objeto Seleciona
	
        SelectEdita s = new SelectEdita();
        
               
        if (s.pageSelect(dtora.dataSeg(dt_serv), 1, 1).equals("null")){
                  
            response.sendRedirect("EscalaCC?dt_serv="+dt_serv);
        }
        
   out.println("htmlsssssssss");
   
  }
  
  
   public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException
    {
        doGet(request, response);
    }
  
}
Criado 17 de maio de 2006
Ultima resposta 17 de mai. de 2006
Respostas 2
Participantes 2