[RESOLVIDO] Refresh apos excluir Vraptor + Hibernate

9 respostas
david.cs20

Ao excluir um item de uma lista estou tendo que da um refresh manual para que a mesma mostre os dados corretos.
Não tenho certeza se estou usando o redirect da melhor maneira segue o código abaixo:

// Deletar Clientes
	public void remover(Long id) {
		dao.delete(id);
		result.use(Results.logic()).redirectTo(ClienteController.class).lista();
	}
Segue tbm jsp
<script type="text/javascript">
 
function confirmacao(id) {
    var resposta = confirm("Tem certeza que deseja excluir este Cliente?");

    if (resposta == true) {
    	window.location.href = "remover?id="+ id;
    }
}
</script>


<table id="conteudo_tabelas_1900" class="tablesorter">
       <thead>
           <tr id="legenda">
                <th>CNPJ</th>
                <th>Razão Social</th>
                <th>Nome Fantasia</th>
				<th>Responsável</th>
                <th>E-Mail</th>
                <c:if test="${usuarioWeb.logado }">
                    <th>Editar</th>
                    <th>Remover</th>
                </c:if>
            </tr>
        </thead>
        <tbody>
            <c:forEach items="${clienteList}" var="cliente">
                <tr>
                    <td id="login">${cliente.cnpj}</td>
                    <td id="login">${cliente.razao_social}</td>
                    <td id="login">${cliente.nome_fantasia}</td>
                    <td id="login">${cliente.responsavel}</td>
                    <td id="login">${cliente.email}</td>
                    
                    <c:if test="${usuarioWeb.logado }">
                    <td align="center" id="icones_cadastro"><center><input type="image" src="../imagens/edit.png" value="Editar" width="26" height="25" onclick="location.href='editar?id=${cliente.id}' "></center></td>
                    <td align="center" id="icones_cadastro"><center><input type="image" src="../imagens/exclude.png" value="Remover" width="25" height="26" onclick="confirmacao('${cliente.id}')"></center></td>
                    </c:if>
                </tr>
            </c:forEach>
        </tbody>
    </table>
    </div>
    </div>

Desde ja obrigado !

9 Respostas

Lucas_Cavalcanti

você pode usar o atalho:

result.redirectTo(ClienteController.class).lista();

de resto está ok…

vc poderia usar o jquery pra facilitar a sua vida, e links ao invés de input image, pra não precisar usar o onclick

david.cs20

Ele exclui mais ainda tenho que da um refresh na pagina…

Lucas_Cavalcanti

isso pq você está usando o window.location.href…

como eu disse, troque o seu input image por um:

<a href="a url que vc quer"><img src="caminho da imagem"/></a>

se precisar da confirmação, coloque no onclick do link. Pode até ser direto. algo como onclick=“confirm(…)”

david.cs20

Fiz das seguinte maneiras e ambas ainda tive que da um refresh:

Lucas_Cavalcanti

a segunda maneira não funcionou? Ele chega a passar pelo controller?

david.cs20

O problema nao e funcionalidade ela exclui perfeitamente o problema e que depois tenho que da um F5 na pagina da lista para confirmar a exclusão !

Lucas_Cavalcanti

se você está usando assim:

<a href="remover?id=${cliente.id}"><img src="../imagens/edit.png"/></a>

e no controller tá assim:

public void remover(Long id) {  
    dao.delete(id);  
    result.redirectTo(ClienteController.class).lista();  
}

deveria funcionar sem precisar de f5

david.cs20

Infelizmente não funcionou
Como isso não e muito importante no projeto a qual estou trabalhando coloquei um time refresh e depois olharei com mais cuidado.
Mais muito obrigado lucas !

david.cs20

Encontrei uma solução mais elegante para o problema:

public Long delete(Session session, Long id){
	String sql = "delete from Dispositivo where id = :id";  
        Query query = session.createSQLQuery(sql);  
        query.setLong("id", id);  
        int rowCount = query.executeUpdate();  
        System.out.println("Rows affected: " + rowCount); 
	return id;
}

Para caso alguém tenha a duvida.

Criado 17 de abril de 2012
Ultima resposta 3 de mai. de 2012
Respostas 9
Participantes 2