Struts - como descobrir qual foi o último forward usado?

8 respostas
bonfarj

Tenho dois arquivos JSP que usam o mesmo ValidatorForm e o mesmo LookupDispatchAction. Em ambas as telas tenho um botao "limpar" e ele precisa saber para qual forward (qual JSP) ele vai direcionar.

Tentei fazer assim:

public ActionForward limpar(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response){
		
		String forward =  mapping.getForward();
		SolicitacaoCotacaoForm solicitacaoCotacaoForm = (SolicitacaoCotacaoForm) form;
		
		solicitacaoCotacaoForm.reset();
		
		preencheComboClientes(solicitacaoCotacaoForm, request);
		
		listar(solicitacaoCotacaoForm,request);
		
		return mapping.findForward(forward);
	}

mas o método mapping.getForward() retorna null.... alguém sabe se o que fiz está certo? essa variavel forward deveria ter o nome do forward utilizado.

valeu pessoal!

8 Respostas

A

Caro bonfarj,

No seu action do struts-config.xml voce deve estar passando algum forward, qual seria ?? Voce esta passnado para que ele faça uma função ? Exiba uma pagina ? o que ? Se nao definiu isso, ele te retornara null !

Por exemplo, se fosse uma jsp:

<forward name="" path="/WEB-INF/jsp/SuaJsp.jsp" />

Por exemplo, se fosse uma classe:

<forward name="" path="/CaminhoaSerProcurado.do?command=MetodoAserExecutado" />

Espero ter ajudado em alguma coisa !

falo

bonfarj

oi marsola2k,

eu entendi oq vc esta falando, estou fazendo isso:

<action path="/SolicitacaoCotacao" parameter="metodo"
			type="br.com.nomus.visao.action.SolicitacaoCotacaoAction" name="SolicitacaoCotacaoForm"
			scope="request" input=".solicitacaoCotacao" validate="false">
			
			<forward name="cadSolicitacaoCotacao" path=".solicitacaoCotacao" />
			<forward name="cadSolicitacaoCotacaoAlterar" path=".solicitacaoCotacaoAlterar" />
		</action>

o problema é o seguinte... se eu estiver na JSP do cadSolicitacaoCotacao, o metodo limpar() do LookupDispatchAction deve retornar para cadSolicitacaoCotacao e caso eu esteja na JSP do cadSolicitacaoCotacaoAlterar, o metodo limpar() do LookupDispatchAction deve retornar para cadSolicitacaoCotacaoAlterar.

eu acho q tem um jeito de fazer isso, nao sei se é mesmo com ActionMapping.getForward()... :oops:

e valeu pela atencao pessoal!, se alguem souber de alguma coisa... :wink:

A

Mas esse metodo de limpar faz o que ? limpa o conteudo da pagina ? Pq o que vc vai fazer entao é passar um forward nos dois metodos, no primeiro e no segundo, so que no cadastro vc vai passar o mapping para cadSolicitacaoCotacao e na alteração vc vai passar o mapping para cadSolicitacaoCotacaoAlterar. Isso foi o que eu entendi !!! Mas se for apenas uma pagina vc pode fazer um if, com a condição de se o botão limpar na pagina de cadastro for solicitado vc passa um return mapping para onde desejar e ele vai redirecionar !!!

ok ?

falo

bonfarj

o problema é que quero fazer com apenas um método limpar()… ja que os metodos sao praticamente iguais… daqui para frente esse tipo de situacao ficara mais comum no sistema, por isso queria evitar criar varios metodos q fazem a mesma coisa… mas se nao tiver jeito faco assim mesmo…

mais uma vez valeu pela ajuda! :wink:

A

Mas o metodo limpar simplemente limpa o conteudo do formulario ?? Coloca na função de um botão ! acho melhor !!!

bonfarj

hummm… é verdade… :stuck_out_tongue:
no limpar da pagina principal ele chama um metodo pq ele tb atualiza uma lista, mas o limpar da outra nao tem lista, bastaria fazer em JS… boa!

mas de qualquer forma, alguem sabe como usa essa ActionMapping.getForward()? Se esse método fizer oq eu acho que ele faz é muito interessante, seria bom saber isso…

valeu pessoal! :wink:

A

Da uma olhada na API do struts, quem sabe te ajuda, eu nao sei te responder a sua pergunta

http://struts.apache.org/1.x/struts-core/apidocs/index.html

Ate mais

I

Explica melhor o que vc esta querendo !!!

Pq usar um unico formulario para varias jsp é normal . Blza !? :slight_smile:

Criado 26 de julho de 2006
Ultima resposta 26 de jul. de 2006
Respostas 8
Participantes 3