Equivalente a JOptionPane em Servlets e JSP

10 respostas
U

Pessoal, como crio uma caixa de confirmação do tipo OK_Cancel em J2EE? Tenho um link que referencia um jsp que contem “pagina.jsp?action=excluir” e quero que o usuário confirme antes que a servlet realmente exclua o dado. como faço?

10 Respostas

D

Não é bem criar caixa de confirmação em JEE, acho que você quis dizer na página, ou melhor, no navegador.

Para isso você pode utilizar a função javascript confirm(texto) que retorna true ou false.

D

Mas como que se faz em javascript?
Desde já agradeço.

U
Era isso mesmo, agora, como faço pra redirecionar para o Servlet? um link direto seria Excluir Como faço para forçar o redirecionamento para este servlet Listar com esses parametros?
<script type="text/javascript">
function confirma(codigo){
var resposta=confirm('Tem certeza que deseja fazer isso?');
if (resposta) {
	//arqui redireciono com o código entre parametro
} else {
        //aqui faço nada.
}
}
</script>
D

Bom, se você estiver fazendo “na mão”, então saiba que tem que ter um form cuja action aponte para o servlet. Então, neste ponto você submeteria o form. Exemplo tosco:

<script>

buddy.submit();

</script>

<form name='buddy' action='/meuservlet'>

.
.
.
conteúdo
.
.
.


</form>
U

<script type="text/javascript"> function confirma(cod){ var resposta=confirm('Deseja realmente excluir?'); if (resposta) excluir.submit(); } </script>

e abaixo…

Mas não funciona. Algo errado?

W

caro ununes!

não funciona é muito genérico…

dá erro de javascript ou erro do servidor? o que acontece quando você clica no botão?

U

não aparece erro nem mensagem de erro nenhuma, nem de javascript.

D

Dê mais detalhes do que está acontecendo, a página está em branco ou algo do tipo?

U

Bem, consegui enviar, na verdade estava sim dando um erro de javascript. Mas agoras não está excluindo direito… vejam os fontes:

clientes.jsp

<?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<%@page import="java.util.List"%>
<%@page import="sys.cliente.Cliente"%>
<%@page import="java.util.Iterator"%>
<%@page import="sys.resources.Messages"%>
<%@page import="java.text.DateFormat"%>
<%@page import="java.text.SimpleDateFormat"%><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" href="../imagens/template_css.css" type="text/css"/>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title><%=Messages.getString("tabClientes")%></title>
<%
  String erro = (String) request.getAttribute("erro");
  if ((erro != null) && (erro.length() != 0)){
  %>
  <p style="color: red"><%= erro %></p> 
  <p><a href="Listar?action=1"><%=Messages.getString("textoWebVoltar")%></a></p>       
  <%
  }
  else{
%>
<script type="text/javascript">
function confirma(){
	if (confirm('Tem certeza que deseja fazer isso?'))
		formulario.submit();
}
</script>
</head>
<body> 
<center><h1><%=Messages.getString("tabClientes")%></h1></center>
<form action="Listar?action=4" method="post" name="formulario">
<table width="84%" border="1" align="center">
  <tr>
    <td></td>
    <td width="7%"><div align="center"><strong>Codigo</strong></div></td>
    <td><div align="center"><strong>Nome</strong></div></td>
    <td><div align="center"><strong>Data de Nascimento</strong></div></td>
    <td><div align="center"><strong>Endereco</strong></div></td>        
  </tr>
  <%
  List lista = (List) request.getAttribute("lista");
  Iterator iterator = lista.iterator();
  Cliente cliente = null;
  SimpleDateFormat df = new SimpleDateFormat(Messages.getString("formatoData"));
  while (iterator.hasNext()){
	  cliente = (Cliente)iterator.next();  
  %>
  <tr>   
    <td><input type="checkbox" name="check[]" value="<%= cliente.getCod()%>"/> 
    <td><%= cliente.getCod()%></td>
    <td><%= cliente.getNomeCompleto()%></td>
    <td><%if (cliente.getDatnas() == null) {%>Não Informado<%}else%><%= df.format(cliente.getDatnas())%></td>
    <td><%if (cliente.getEnd() == null) {%>Não Informado<%}else%><%= cliente.getEnd()%></td>    
  </tr>  
  <%
  }
  %>
  <tr>
    <td></td>
    <td><input type="button" name="ver" value="Ver Dados"></td>
    <td><input type="button" name="alterar" value="Alterar"></td>
    <td><input type="button" name="excluir" value="Excluir" onclick="confirma()"></td>
    <td></td>
    <td></td>
    <td></td>
  </tr>
</table>
</form>
<p></p>
<p><a href="principal.jsp"><%=Messages.getString("textoWebVoltar")%></a></p>
</body>
</html>
<%
  }  
%>

ListarServlet.java

package com.sismed.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import sys.negocio.ICadastro;
import sys.negocio.IPesquisa;
import sys.cliente.Cliente;
import sys.resources.Messages;

public class ListarServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private ClassPathXmlApplicationContext context = null;

	public ListarServlet() {
		super();
		context = new ClassPathXmlApplicationContext("service.xml");
	}

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		if (request.getParameter("action").equals("1")) {
			doListar(request, response);
		} else if (request.getParameter("action").equals("4")) {
			mostrarErro(request, response, "entrou no doGet");
		} else {// action não encontrada
			mostrarErro(request, response, Messages
					.getString("msgServletListarActionErrada"));
		}
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		if (request.getParameter("action").equals("1")) {
			doListar(request, response);
		} else if (request.getParameter("action").equals("4")) {
			if (request.getParameterValues("check[]") == null)
				mostrarErro(request,response,"Nenhum cliente selecionado");
			else {				
				int contaErro=0, contaSucesso=0;
				String[] selecionados = request.getParameterValues("check[]");    //aqui é onde devo excluir
				IPesquisa pesquisa    = (IPesquisa) context.getBean("pesquisa");
				ICadastro remocao     = (ICadastro) context.getBean("cadastro");
				for (int i=0; i<selecionados.length; i++){
					Cliente cliente = pesquisa.pesquisarClientePorID(selecionados[i]);
					if (cliente != null){
						Cliente aux = cliente;
						if (remocao.apagarCliente(cliente))
						{							
							contaErro++;
						}
						else{
							contaSucesso++;
						}						
					}					
				}
				String erro = "";
				if (contaSucesso > 0)
				   erro +=contaSucesso + " clientes removidos com sucesso.";
				if (contaErro > 0)
				   erro += " " + contaErro + " clientes não podem ser removidos pois estão relacionados a outros dados.";
				List<Cliente> lista = (List<Cliente>)pesquisa.pesquisarTodosOsCliente();				
				request.setAttribute("lista", lista);
				request.setAttribute("erro",  erro);				
				RequestDispatcher dispatcher = request
				.getRequestDispatcher("clientes.jsp");
		        dispatcher.forward(request, response);
			}
		} else {// action não encontrada
			mostrarErro(request, response, Messages
					.getString("msgServletListarPacientesActionErrada"));
		}
	}

	private void doListar(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		List<Cliente> lista = null;
		IPesquisa pesquisa = (IPesquisa) context.getBean("pesquisa");
		lista = (List<Cliente>) pesquisa.pesquisarTodosOsClientes();
		if (lista == null)
			mostrarErro(request, response, "Clientes não encontrados");
		else {
			try {
				request.setAttribute("lista", lista);
				RequestDispatcher dispatcher = request
						.getRequestDispatcher("clientes.jsp");
				dispatcher.forward(request, response);
			} catch (Exception e) {
				mostrarErro(request, response, Messages
						.getString("msgServletListarPacientesErroListar"));
			}
		}
	}

	private void mostrarErro(HttpServletRequest request,
			HttpServletResponse response, String string)
			throws ServletException, IOException {
		request.setAttribute("erro", string);
		RequestDispatcher dispatcher = request
				.getRequestDispatcher("clientes.jsp");
		dispatcher.forward(request, response);
	}	
}

O que ocorre é que: se tenho uma lista de, por exemplo, 10 elementos e seleciono somente 1, a função da servlet que apaga a lista está tentando apagar todos os registros independentemente de estarem selecionados ou não. Eu gostaria que apagasse como nos webmails, apenas os que estão selecionados e se puderem ser apagados.

U

Resolvido, na verdade o erro era na classe de busca por ID. Funcionando. Obrigado a todos pela ajuda.

Criado 18 de agosto de 2008
Ultima resposta 19 de ago. de 2008
Respostas 10
Participantes 4