Problemas com navegabilidade e definição de variáveis

4 respostas
celso.martins

Estou iniciando na programação Java para Web e estou encontrando dificuldades em alguns pontos. Ridículos e bem de iniciante mesmo, é claro, mas que estão me dando dores de cabeça.
Eu tenho conhecimento de comandos paralelos em PHP, mas preciso fazer com Java. Estou usando JSP’s.
Aí vão eles:

  1. Como posso dar um “reload” na página após seleção em uma ComboBox, ou em um action de form? Por exemplo: Como acontece na sequência País->Estado->Cidade em qualquer página de cadastramento;
  2. Como chamar diretamente uma página após uma ação (Já que no comando é preciso clicar no link). Acho que seria alguma coisa equivalente ao RequestDispatcher que usamos nos servlets. Preciso de algo parecido para colocar na JSP e, finalmente,
  3. Como colocar uma variável na session. Sei como colocar um Bean, mas não como colocar uma ou mais variáveis. Estas variáveis seriam para testar condições dentro de JSP’s diferentes.

Meu problema está na JSP. Queria fazer algo como isso que está em PHP em Java:

<? 
    $Cod_Ususario = "1234"; 
    session_start(); 
    session_register('$Cod_Usuario'); 
?>

Já pesquisei em outros fóruns e nada encontrei. Agradeço a quem puder ajudar.

4 Respostas

Pedrosa

Vc chama uma função em javascript passando uma ação para sua Servlet

<script language="JavaScript">
function filtrar(){
    if(document.forms[0].usuario.selectedIndex==0){
        return;
    }
   document.forms[0].acao.value="obterPalpitesAdm"; 	
   document.forms[0].action="bolao";
   document.forms[0].submit();
}
</script>

<select name="usuario" onchange="filtrar();">
    <option value="">.. Selecione ..</option>
    <c:forEach var="usuarios" items="${usuarios}">
         <option value="${usuarios.codigo}" <c:if test="${usuarios.codigo == codigo}">selected</c:if>>${usuarios.usuario}</option>
    </option>
    </c:forEach>
</select>

Na Servlet

String acao;
acao = request.getParameter("acao").toString();
if(acao.equalsIgnoreCase("obterPalpitesAdm")){
    RequestDispatcher rd;
    request.setAttribute("usuarios",bolao.getUsuariosPalpite());
    target = /suaPagina.jsp;
    rd = getServletContext().getRequestDispatcher(target);
    rd.forward(request, response);
}

Retorma uma lista e itera no JSP.

Quanto a sessao jogue pela servlet também:

HttpSession sessao = request.getSession();
sessao.setAttribute("teste","Fabio Pedrosa");

//Pegando a sessao no html

${teste}
celso.martins

Obrigado pela pronta resposta e pelos códigos. Vou começar agora a testa-los.

Só mais uma coisa. Teria alguma forma de fazer isso usando um botão ao lado da combo e programando este botão, sem usar o onchange da cambo?

Meus superiores não são muito adeptos dessa solução usando javascript e programando o evento.

Pedrosa

É a melhor maneira, mas se vc deseja colocar um botão, basta enviar o contéudo dessa combo submetendo o formulário.

Mas geralmente temos mais de uma ação na tela, por exemplo esse filtro nas suas combos e outros botões para inclusão, alteração etç, como saber a ação, eu uso com javascript mesmo e no caso das combos no onChange.

celso.martins

Valeu cara… vou tentar esses códigos que você me passou.

Abraços

Criado 19 de junho de 2006
Ultima resposta 19 de jun. de 2006
Respostas 4
Participantes 2