Struts action request de uma lista de Estados erro quando faço submit e retorno ao jsp

4 respostas
S
Olá pessoal

Na minha Action eu tenho a seguinte lista de estados:

ArrayList estados = new ArrayList();

request.setAttribute(listaEstados,estados);

Ela é passada por request para o jsp e não pode ser passada atravez do uso de session o uso de session aqui é proibido então estou com o seguinte problema:

A primeira vez que carrega o jsp ele monta meu combobox com todos os estados, agora se eu fizer submit sem quer o usuário tenha informado o estado, na minha action eu verifico se esse combo foi selecionado ou não, caso não tenha sido informado eu retorno para o jsp com uma mensagem de erro que o usuário deve selecionar um estado, é ai que esta o problema no momento em que eu retorno ao jsp o combo está vaziu, eu não posso executar a action outra vez para montar o combo de estados eu tenho que retornar direto para o jsp.
e tambem não posso usar javascript para validar o combo estados, eu tenho que chegar na action de qualquer maneira e retornar ao jsp.

Obs: na verdade quando faço submit do jsp eu perdir a lista de estados.

Alguem teria alguma idéia de como solucionar esse problema?

<html:select property=“estados” >
<logic:present name=“listaEstados” scope=“request” >
<pdk-html:options collection=“listaEstados” property=“estados” labelProperty=“estados”/>
</logic:present>
</pdk-html:select>

Grato

Silva

4 Respostas

LeoMarola

Pera,

Não entendi! mas enfim, porque você não enviar esta lista novamente pela requisição? que ônus isso te gera?

D
<blockquote><div class="quote-author">Silva03:</div>Olá pessoal

Na minha Action eu tenho a seguinte lista de estados:

ArrayList estados = new ArrayList();

request.setAttribute(“listaEstados”,estados);

Ela é passada por request para o jsp e não pode ser passada atravez do uso de session o uso de session aqui é proibido então estou com o seguinte problema:

A primeira vez que carrega o jsp ele monta meu combobox com todos os estados, agora se eu fizer submit sem quer o usuário tenha informado o estado, na minha action eu verifico se esse combo foi selecionado ou não, caso não tenha sido informado eu retorno para o jsp com uma mensagem de erro que o usuário deve selecionar um estado, é ai que esta o problema no momento em que eu retorno ao jsp o combo está vaziu, eu não posso executar a action outra vez para montar o combo de estados eu tenho que retornar direto para o jsp.
e tambem não posso usar javascript para validar o combo estados, eu tenho que chegar na action de qualquer maneira e retornar ao jsp.

Obs: na verdade quando faço submit do jsp eu perdir a lista de estados.

Alguem teria alguma idéia de como solucionar esse problema?

<html:select property=“estados” >
<logic:present name=“listaEstados” scope=“request” >
<pdk-html:options collection=“listaEstados” property=“estados” labelProperty=“estados”/>
</logic:present>
</pdk-html:select>

Grato

Silva

Alternativas:
Jogar a lista na sessão
Recarregar a lista e jogar no request

Ou é um ou é outro, não existe outra alternativa. Até existe para alguns caso, segue:

Carregar a lista de estados no application atraves de um ServletContextListener

moura03

Fala rapaz!!

Eu já tive este problema. Eu resolvi colocando pra popular novamente a combo dentro do meu método validate, no meu ActionForm, do mesmo jeito que eu faço na Action inicial.

:smiley:

[]´s

moura03

Desculpe,

Exemplo:

public ActionErrors validate(ActionMapping mapping,
			HttpServletRequest request) {
		
		ActionErrors errors = new ActionErrors(); 	  
		
				if(getNome().trim().equals("")){
					errors.add("nome",new ActionMessage("error.dsNome.Vazio"));
				}			

				if(getEmail().trim().equals("")){
					errors.add("email",new ActionMessage("error.dsEmail.Vazio"));
				}						
				
				if(!getSenhaconf().trim().equals(getSenha().trim())){
					errors.add("senha",new ActionMessage("error.dsSenha.NaoCoincide"));
				}

				
				CargoDAO CargoD = new CargoDAO();
				List listaCargos = CargoD.getListCargos();
				request.setAttribute("listaCargos", listaCargos);
				
			}			
		}
		
		return errors;
	}

[]´s

Criado 18 de abril de 2007
Ultima resposta 28 de nov. de 2009
Respostas 4
Participantes 4