Chamar Action do Struts via javascript [RESOLVIDO]

12 respostas
vmoreira

Pessoal estou desenvolvendo um sistema web, onde o usuário pode excluir um item de um s:select , porém preciso fazer uma confirmação de exclusão, até aí tudo bem, mas depois que o usuário der ok para exclusão eu preciso chamar uma action do struts e passar um parametro para a action, como posso resolver este problema?

12 Respostas

dtxk

isso que vc esta falando seria Ajax… use o DWR como framework!

vmoreira

Teria algum exemplo ?

T

Coloque um id no seu select e na confirmação de exclusão (botão) chame um função javascript para pegar o campo que faz referência ao objeto e chamar uma action.
Ex:

<script type="text/javascript">
function excluir(idSelect){
       var slc = document.getElementById(idSelect);
	var indexSelect = slc.selectedIndex;
	var valueSelected = slc.options[indexSelect].value;
	window.location="/app/excluir.do?idItem="+valueSelected;	
}
</script>
<select ... id="itens">
....
</select>

No seu botão --> onclick=“excluir(‘itens’);”
É ± essa a ideia!

vmoreira

Seria isso :

window.location="../CadastrarReembolsoAction.excluirReembolso?idItem="+valueSelected;
T
//Somente o método
    window.location="../excluirReembolso.do?idItem="+valueSelected;
vmoreira

Segue a minha fuction

function confirmacao() {

	var resposta= confirm("Deseja remover esse registro?");
	var pseq_remessa_fin_item=document.getElementById("pseq_remessa_fin_item").value;
	
	if (resposta==true){
		
		window.location="../excluirReembolso?pseq_remessa_fin_item="+pseq_remessa_fin_item;
	}
}

Quando eu executo me traz esta mensagem na página :

type Status report

message /excluirReembolso

description The requested resource (/excluirReembolso) is not available.
caio.ribeiro.pereira

Vc esta usando JSTL nas paginas JSP que possua esse codigo Javascript?

Pq caso esteja, vc tbm podera inserir um codigo abaixo que tera mais consistencia e sera menos propicio a erros, caso mude o dominio do projeto:

function confirmacao() {  
  
    var resposta= confirm("Deseja remover esse registro?");  
    var pseq_remessa_fin_item=document.getElementById("pseq_remessa_fin_item").value;  
      
    if (resposta==true){  
        // Inserindo o JSTL abaixo vc apenas cita no value o nome da url da action e nao precisara inserir uma url completa desde o http://.....
        // Pois esse comando sera inserido primeiro pois vira do servidor e depois concatenado com a variavel do javascript.
        window.location="<c:url value='/excluirReembolso?pseq_remessa_fin_item=' />"+pseq_remessa_fin_item;  
    }  
}
D

Por acaso, na url não faltou o .do ? ou outra sintaxe para que ele chame o struts configurado no web.xml?

vmoreira

Na verdade eu criei uma pasta js dentro da pasta WEB-INF e criei a function lá dendo do arquivo js/funcoes.js;

Fiz desta forma que vc aconselhou mas também não funcionou ;

vmoreira

Até acrescentando o .do depois do método dá erro.

vmoreira

Pessoal ficou resolvido da seguinte forma:

No meu script ficou:

function confirmacao() {

	var resposta= confirm("Deseja remover esse registro?");
	var id=document.getElementById("id").value;
	
	if (resposta==true){
		window.location="ExcluirReembolso.action?pseq_remessa_fin_item=" + id;	

	}
}

Na Action:

public String excluirReembolso(){
         HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
		dao.excluirReembolso(request.getParameter("pseq_remessa_fin_item"));
		return "success";
	}
T

REssucitando…

preciso mandar mais de um parâmetro, como ficaria?

Criado 12 de agosto de 2011
Ultima resposta 22 de jul. de 2015
Respostas 12
Participantes 6