Servlets

6 respostas
rebelato

Bom dia pessoal,

Tenho uma dúvida, tenho uma pagina jsp com campos de cadastro (text, combos, etc.) quando clico em ok ele joga as informações para meu servlet, no retorno do servlet gostaria que meu combo exibisse a informação selecionada anteriormente.

Desde já agradeço.

6 Respostas

zoren

retorna a opção selecionada e usa um if para colocar o atributo selected no item desejado

viniciusfaleiro

Cara… tipo… é o mesmo fomulário e vc ta dando um post e recarregando a página ou é outro form??? Se for o mesmo usa Ajax cara… ele não recarrega a página…

Se quiser ajuda fala ai…

rebelato

Opa,

é o mesmo formulario, não manjo nada de ajax :cry:

Se puderem colocar um exemplo ai fica show.

viniciusfaleiro

Putlz… tinha escrito um tutorial aqui… ahuahauha… fecho a sessão… vo escrever no txt e posto ai

viniciusfaleiro
1 - Primeiramente é preciso criar uma variavel de texto em javascript que irá representar o GET que vc vai passar pro seu Servlet. Eu uso essa função (Fica no script da minha JSP) :
<script>
var Campos
//Configure seus campos... Não esqueça de tratar radiobuttons e combos....

function setarCampos() {

                campos = "name="+encodeURI(document.getElementById('name').value)
                    +"&rg="+encodeURI(document.getElementById('rg').value)
                    +"&cargo="+encodeURI(document.getElementById('cargo').value)
                    +"&dpto="+encodeURI(document.getElementById('dpto').value)
                    +"&ramal="+encodeURI(document.getElementById('ramal').value)
                    +"&cc="+encodeURI(document.getElementById('cc').value);
}
<script>

2 - Importar o Arquivo JS do ajax.. O que ele faz é identificar o navegador e criar um POST utilizando o GET setado na função anterior sem recarregar a página..
Crie um arquivo scriptAjax.js e jogue essas 2 funções la dentro....

function extraiScript(texto) {
    //Função para que funcione as tags <script> utilizando o metodo ajax
    //Powered by LionSoft do Brasil
    var ini, pos_src, fim, codigo;
    var objScript = null;
    ini = texto.indexOf('<script', 0);
    while (ini!=-1){
        objScript = document.createElement("script");
        pos_src = texto.indexOf(' src', ini)
        ini = texto.indexOf('>', ini) + 1;
        if (pos_src < ini && pos_src >=0) {
            ini = pos_src + 4;
            fim = texto.indexOf('.', ini)+4;
            codigo = texto.substring(ini,fim);
            codigo = codigo.replace("=","").replace(" ","").replace("\"","").replace("\"","").replace("

3- No head do seu JSP coloque a função do passo 1 no script e também importe o scriptAjax.js
[code]<script type="text/javascript" src="scriptAjax.js"></script>
4- No botao de post vc vai usar a seguinte função
<input type="submit" name="postar" id="postar" value="Enviar Solicita&ccedil;&atilde;o" onclick="setarCampos();ajaxFunction('PrjInformat/DocTreatment',campos,'div_resultado','1');return false;" />

O que isso faz??? Simples:
-primeiro a gente seta a variavel que conterá o GET para o servlet com a função setarCampos();
-Depois a gente chama a função do JS que vai enviar o POST por ajax...passando como parametro
1:PrjInformat/DocTreatment - Caminho do Servlet
2:o texto de GET (definido na função setarCampos())
3:div_resultado - É a div onde a função vai colocar a resposta que vc passar.. Por exemplo... se vc queria salvar um registro no banco no seu servlet, porém o registro já existia... No servlet vc simplesmente pode fazer out.print("O registro já existe") e a função irá inserir esse valor dentro da DIV que vc infomar..
4:Se vc informar o valor 1 quer dizer que o retorno do servlet pode ser um script.. por exemplo... caso após o processamento do servlet vc queira que a janela seja fechada... out.print("");

Resumindo.. Isso não vai recarregar sua página e vc pode fazer aplicações mais agradáveis para o usuário...
Fique atento apenas que o metodo comum de redirecionamento de página do Servlet não vai funcionar com AJAX... pois vc está redirecionando a solicitação do AJAX e não a página que o usuário está atualmente...
Você pode sim redirecionar o ajax para outros servlets, sem problemas... más se quiser redirecionar a página que o usuário está visualizando vai ter que mandar de volta um script...

Boa sorte e qualquer coisa grita ai...","").replace("

3- No head do seu JSP coloque a função do passo 1 no script e também importe o scriptAjax.js
<script type="text/javascript" src="scriptAjax.js"></script>
4- No botao de post vc vai usar a seguinte função
<input type="submit" name="postar" id="postar" value="Enviar Solicita&ccedil;&atilde;o" onclick="setarCampos();ajaxFunction('PrjInformat/DocTreatment',campos,'div_resultado','1');return false;" />

O que isso faz??? Simples:
-primeiro a gente seta a variavel que conterá o GET para o servlet com a função setarCampos();
-Depois a gente chama a função do JS que vai enviar o POST por ajax...passando como parametro
1:PrjInformat/DocTreatment - Caminho do Servlet
2:o texto de GET (definido na função setarCampos())
3:div_resultado - É a div onde a função vai colocar a resposta que vc passar.. Por exemplo... se vc queria salvar um registro no banco no seu servlet, porém o registro já existia... No servlet vc simplesmente pode fazer out.print("O registro já existe") e a função irá inserir esse valor dentro da DIV que vc infomar..
4:Se vc informar o valor 1 quer dizer que o retorno do servlet pode ser um script.. por exemplo... caso após o processamento do servlet vc queira que a janela seja fechada... out.print("");

Resumindo.. Isso não vai recarregar sua página e vc pode fazer aplicações mais agradáveis para o usuário...
Fique atento apenas que o metodo comum de redirecionamento de página do Servlet não vai funcionar com AJAX... pois vc está redirecionando a solicitação do AJAX e não a página que o usuário está atualmente...
Você pode sim redirecionar o ajax para outros servlets, sem problemas... más se quiser redirecionar a página que o usuário está visualizando vai ter que mandar de volta um script...

Boa sorte e qualquer coisa grita ai...","").replace(">","");
objScript.src = codigo;
} else {
fim = texto.indexOf('', ini)
codigo = texto.substring(ini,fim);
objScript.text = codigo;
}
document.body.appendChild(objScript);
ini = texto.indexOf(' objScript = null;
}
}

function ajaxFunction(servlet,gets,dest,flag) {
if(xmlhttp) {
xmlhttp.open("POST","http://localhost:8080/" + servlet,true); //getname will be the servlet name

xmlhttp.onreadystatechange = function(){
if (xmlhttp.readyState == 4) {
if(xmlhttp.status == 200) {
var pagina = unescape(xmlhttp.responseText);

document.getElementById(dest).innerHTML=pagina; //Update the HTML Form element

window.alert(pagina);

if(flag == 1){
extraiScript(pagina);
}
}
else {
alert("Error during AJAX call. Please try again:" + xmlhttp.statusText);
}
}
}

xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
xmlhttp.setRequestHeader("Pragma", "no-cache");
xmlhttp.setRequestHeader("encoding", "ISO-8859-1");

xmlhttp.send(gets); //Posting txtname to Servlet
}
}
[/code]

3- No head do seu JSP coloque a função do passo 1 no script e também importe o scriptAjax.js
<script type="text/javascript" src="scriptAjax.js"></script>
4- No botao de post vc vai usar a seguinte função
<input type="submit" name="postar" id="postar" value="Enviar Solicita&ccedil;&atilde;o" onclick="setarCampos();ajaxFunction('PrjInformat/DocTreatment',campos,'div_resultado','1');return false;" />

O que isso faz??? Simples:
-primeiro a gente seta a variavel que conterá o GET para o servlet com a função setarCampos();
-Depois a gente chama a função do JS que vai enviar o POST por ajax...passando como parametro
1:PrjInformat/DocTreatment - Caminho do Servlet
2:o texto de GET (definido na função setarCampos())
3:div_resultado - É a div onde a função vai colocar a resposta que vc passar.. Por exemplo... se vc queria salvar um registro no banco no seu servlet, porém o registro já existia... No servlet vc simplesmente pode fazer out.print("O registro já existe") e a função irá inserir esse valor dentro da DIV que vc infomar..
4:Se vc informar o valor 1 quer dizer que o retorno do servlet pode ser um script.. por exemplo... caso após o processamento do servlet vc queira que a janela seja fechada... out.print("");

Resumindo.. Isso não vai recarregar sua página e vc pode fazer aplicações mais agradáveis para o usuário...
Fique atento apenas que o metodo comum de redirecionamento de página do Servlet não vai funcionar com AJAX... pois vc está redirecionando a solicitação do AJAX e não a página que o usuário está atualmente...
Você pode sim redirecionar o ajax para outros servlets, sem problemas... más se quiser redirecionar a página que o usuário está visualizando vai ter que mandar de volta um script...

Boa sorte e qualquer coisa grita ai...

rebelato

Cara,

Show de bola. Valeu pela força. Resolvido meu problema. vou aproveitar e dar uma lida sobre ajax. Gostei da idéia!

Abração.

Criado 19 de novembro de 2009
Ultima resposta 19 de nov. de 2009
Respostas 6
Participantes 3