Olá galera…
tenho uma pagina que exibe um array. O que eu estou precisando que esta página faça é uma atualização quando a pessoa clicar em excluir…
no meu caso, a pessoa clica em excluir; depois ela é redirecionada para o menu; clica no link para exibir novamente o array; e exclui outro item.
Já tentei fazer assim… quando a pessoa clica em excluir, não redirecionar pra pagina nenhuma, apenas redirecionar pra mesma página onde ela pode excluir os itens, mas isso não funciona corretamente, os dados não mudam(só se atualizar a página várias vezes).
Já li que isso é possivel com AJAX, já fiz uns exemplos do site do dwr, mas não entendi nada, tudo que tem lá é pra formularios, abas, não fala nada de arraylist. Também fiquei sabendo que existem várias desvantagens com o uso de ajax, coisa do tipo, o js ta desabilitado, corro o risco de expor dados sigilosos, apesar da minha aplicação estar em MVC Servlet isto é dificil acontecer.
Queria saber se existe algum outro caminho para fazer sem usar frameworks mvc, ou ajax, pq eu não uso, estou em fase de estudos.
Como atualizar uma página sem ajax?
6 Respostas
Posta sua página e a classe controladora da sua jsp para eu ver o que está acontecendo…
Fala pqnoje.
Recomendo a utilização de javascript + jQuery. Dá pra fazer o que você necessita rapidinho.
Abs.
Aqui é onde tudo começa, a pessoa clica em inserir albuns e fotos
paineladmin.jsp
<table>
<tr>
<td>
<a href='servletweb?acao=ListarUsuario'>Listar Usuarios</a><br>
<a href='servletweb?acao=ListarInserirAlbum'>Inserir Albuns e Fotos</a><br>
<a href='servletweb?acao=ListarInserirNoticia'>Modificar e Inserir Notícia</a><br>
<a href='servletweb?acao=ListarInserirNoticiaImagem'>Modificar e Inserir Notícia com Imagem</a><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</td>
</tr>
</table>
classe que lista todos os albuns
ListarInserirAlbum.class
package controller;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import model.AlbumDAO;
import controller.vo.Album;
public class ListarInserirAlbum {
public static String execute(HttpServletRequest request) {
String jsp = "";
try {
ArrayList<Album> listAlbum = AlbumDAO.getAll();
request.setAttribute("listAlbum", listAlbum);
jsp = "/ListarInserirAlbum.jsp";
} catch (Exception e) {
e.printStackTrace();
jsp = "";
}
return jsp;
}
}
Pagina que lista todos os albuns e da as opções para que o usuário possa operar
ListarInserirAlbum.jsp
<!-- Import dentro! -->
<%@page import="controller.vo.Album,controller.Login,java.util.ArrayList"%>
<!-- Import dentro! -->
<!-- Declarações dentro! -->
<%!
ArrayList<Album> listAlbum = null;
%>
<!-- Declarações dentro! -->
<!-- Valores dentro! -->
<%
Login.validarSessaoAdmin(request, response);
ArrayList<Album> listAlbum = (ArrayList<Album>) request.getAttribute("listAlbum");
int tamanho = 0;
if(listAlbum != null){
tamanho = listAlbum.size() + 1;
}
%>
<!-- Valores dentro! -->
<table>
<tr>
<%
int i = 0;
if(listAlbum != null){
while(i < listAlbum.size()) {
%>
<td>
<table>
<form action="servletweb?acao=NovaFoto" method="post">
<tr>
<td align="center">
<img src="<%=listAlbum.get(i).getFotoAlbumCaminho()%>" id="imagem" alt=""/>
</td>
</tr>
<tr>
<td align="center">
<p><%=listAlbum.get(i).getFotoAlbumDescricao()%></p>
</td>
</tr>
<tr>
<td align="center">
<input name="albumId" type="hidden" value="<%=listAlbum.get(i).getFotoAlbumId()%>" />
<input type="submit" value="Inserir Foto" />
</td>
</tr>
</form>
<form action="servletweb?acao=ListarExcluirFoto" method="post">
<tr>
<td align="center">
<input name="Id" type="hidden" value="<%=listAlbum.get(i).getFotoAlbumId()%>"/>
<input type="submit" value="Listar Foto"/>
</td>
</tr>
</form>
</table>
</td>
<%
i++;
if (i % 3 == 0){ %>
</tr>
<tr>
<%
}
}
}else
out.print("Não existem albuns, adicione um!");
%>
</tr>
</table>
Quando o usuario clica em Listar Foto, lista todas as fotos do album escolhido para que ele possa escolher qual foto deletará…
ListarExcluirFoto.class
package controller;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import model.FotoDAO;
import controller.vo.Foto;
public class ListarExcluirFoto {
public static String execute(HttpServletRequest request) {
String jsp = "";
try {
int albumId = Integer.parseInt(request.getParameter("Id"));
ArrayList<Foto> listFoto = FotoDAO.getAll(albumId);
if(listFoto != null){
request.getSession().setAttribute("listFoto", listFoto);
request.setAttribute("listFoto", listFoto);
jsp = "/ListarExcluirFoto.jsp";
}else{
String erro = "Nao existe registro!";
request.setAttribute("erro", erro);
jsp = "/Erro.jsp";
}
} catch (Exception e) {
e.printStackTrace();
jsp = "";
}
return jsp;
}
}
Este JSP lista todas as fotos do album escolhido com o botão para excluir que chama a classe ExcluirFoto.class
ListarExcluirFoto.jsp
<table>
<tr>
<%
int i = 0;
while(i < listFoto.size()) {
%>
<td align="center">
<form name="frmExcluirFoto" method="post" action="servletweb?acao=ExcluirFoto" >
<img src="<%=listFoto.get(i).getFotoCaminho()%>" alt="" id="imagem"/>
<input type='hidden' name='cod' value='<%=listFoto.get(i).getId()%>'/>
<input type='hidden' name='table' value='Foto'/>
<input type='hidden' name='acao' value=''/>
<p><input type='submit' value='Excluir'/></p>
</form>
</td>
<%
i++;
if (i % 3 == 0){ %>
</tr>
<tr>
<%
} //fim do if
} // fim do for
%>
</table>
É nesta classe que está o problema…
Veja bem para qual jsp ele está redirecionando(ListarInserirFoto.class), o que eu to tentando fazer, é que ele redirecione para o ListarExcluirFoto…
package controller;
import javax.servlet.http.HttpServletRequest;
import model.FotoDAO;
import controller.vo.Foto;
public class ExcluirFoto {
static String execute(HttpServletRequest request) {
String jsp = "";
try {
// lendo o CodUsuario que se deseja alterar
String cod = request.getParameter("cod");
Foto foto = FotoDAO.getById(Integer.parseInt(cod));
boolean delete = FotoDAO.delete(foto);
if(delete != false){
jsp = ListarInserirAlbum.execute(request);
}else{
String erro = "Ocorreu erro ao Excluir Foto!";
request.setAttribute("erro", erro);
jsp = "/Erro.jsp";
}
} catch (Exception e) {
e.printStackTrace();
jsp = "";
}
return jsp;
}
}
Bom, é isso que eu tenho…
Ainda não li nada sobre o JQuery, pelo nome parece que resolve o meu problema, mas onde eu posso arrumar um bom tutorial pra fazer o que eu quero? Seria bom tutoriais que mostrem mais codigos do que palavras, pq eu entendo mais código do que português ou inglês hehehe…
Muito obrigado pela ajuda
Da maneira que vc esta usando eh melhor fazer com jstl…
Vou te mandar um exemplo q tenho aki…
Adicione as libs no projeto…
importe as taglibs na sua pagina assim…
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="input" uri="http://jakarta.apache.org/taglibs/input-1.0" %>
<%@ taglib prefix="display" uri="http://displaytag.sf.net"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
E use o display:table
Assim:
<display:table style="width: 98%" class="tabelaFormulario" id="bean"
name="${bean.lista}" partialList="true"
pagesize="tamPagina"
size="tamLista"
requestURI="/consultaLista.do">
<display:column title="Nome" property="nmCliente" paramId="idCliente"
paramProperty="idCliente"
href="/alteraCliente.do">
</display:column>
<display:column title="CPF" property="cpfCliente"></display:column>
<display:column title="Excluir">
<c:url var="urlExcluir" value="/excluir.do">
<c:param name="idCliente" value="${bean.idCliente}" />
</c:url>
</display:column>
</display:table>
Espero q ajude…
Att,
Hunnmm JSTL vai salvar a minha vida, ainda não sei usar, mas vou aprender
to lendo a documentação no apache pra ver se consigo fazer isso que vc me deu de exemplo, qualquer coisa eu posto de novo.
mas o JSTL vai resolver o meu problema de ter que redirecionar pra uma página que não tem nada a ver com o meu array?