Galera é possivel desenvolver Ajax com Struts 1.3.10??
Alguem já fez isso? Eu tenho um sistema que em algumas paginas chega a ter 4 forms. E o cliente nao quer ver o refresh das paginas toda hora que for acionar um form, por isso estou tentando aplicar Ajax pra fazer a chamada e preencher apenas o que é preciso. Porem nao estou obtendo sucesso
A alteração de struts 1 p/ struts 2 nesta altura do campeonato é complicada e em todos os tutoriais que li em nenhum explica como posso passar os dados da mesma maneira que em forms via Ajax.
cara…é possível sim usar ajax com Struts 1…
mas vc tem que fazer via JS, tipo na mão mesmo… e como vc falou que tem vários forms, é bem provavel que
fique bem trabalhoso…
vc te que fazer usando XMLHttpRequest, no site do w3schools http://www.w3schools.com/ajax/ajax_intro.asp explica…
mas procura no google ai que tem bastante coisa…
eu ja cheguei a ver algumas lib prontas… mas nunca usei… e tb não lembro onde vi…
J
joao.junior
Eu fiz isso em um sistema com struts 1.2, mas não foi do form inteiro somente de 1 ou 2 campos, no retorno de seus metodos voce não usa mapping.findForward(“same”) para voltar para a mesma tela.
functionretrieveURL(url,nameOfFormToPost){alert(url+" "+nameOfFormToPost);//converttheurltoastringurl=url+getFormAsString(nameOfFormToPost);//DotheAJAXcallif(window.XMLHttpRequest){//Non-IEbrowsersreq=newXMLHttpRequest();req.onreadystatechange=processStateChange;try{req.open("GET",url,true);}catch(e){alert("Server Communication Problem\n"+e);}req.send(null);}elseif(window.ActiveXObject){//IEreq=newActiveXObject("Microsoft.XMLHTTP");if(req){req.onreadystatechange=processStateChange;req.open("GET",url,true);req.send();}}}functiongetFormAsString(formName){//SetupthereturnStringreturnString="";//GettheformvaluesformElements=document.forms[formName].elements;//loopthroughthearray,buildinguptheurl//intheformat'/strutsaction.do&name=value'for(vari=formElements.length-1;i>=0;--i ){//weescape(encode)eachvaluereturnString+="&"+escape(formElements[i].name)+"="+escape(formElements[i].value);}//returnthevaluesreturnreturnString;}functionprocessStateChange(){if(req.readyState==4){//Completeif(req.status==200){//OKresponse//SplitthetextresponseintoSpanelementsspanElements=splitTextIntoSpan(req.responseText);//UsethesespanelementstoupdatethepagereplaceExistingWithNewHtml(spanElements);}else{alert("Problem with server response:\n "+req.statusText);}}}functionreplaceExistingWithNewHtml(newTextElements){//loopthroughnewTextElementsfor(vari=newTextElements.length-1;i>=0;--i){//checkthatthisbeginswith<spanif(newTextElements[i].indexOf("<span")>-1){//getthespanname-sits//betweenthe1stand2ndquotemark//Makesureyourspansareintheformat//<spanid="someName">NewContent</span>startNamePos=newTextElements[i].indexOf('"')+1;endNamePos=newTextElements[i].indexOf('"',startNamePos);name=newTextElements[i].substring(startNamePos,endNamePos);//getthecontent-everything//afterthefirst>markstartContentPos=newTextElements[i].indexOf('>')+1;content=newTextElements[i].substring(startContentPos);//NowupdatetheexistingDocument//withthiselement,checkingthat//thiselementexistsinthedocumentif(document.getElementById(name)){document.getElementById(name).innerHTML=content;}}}}functionsplitTextIntoSpan(textToSplit){//SplitthedocumentreturnElements=textToSplit.split("</span>");//Processeachoftheelementsfor(vari=returnElements.length-1;i>=0;--i){ //Removeeverythingbeforethe1stspanspanPos=returnElements[i].indexOf("<span");//ifwefindamatch,takeout//everythingbeforethespanif(spanPos>0){subString=returnElements[i].substring(spanPos);returnElements[i]=subString;}}returnreturnElements;}
no struts config … aquele form esta configurado pra ir pra classe IgrejaAction … porem nao to nem conseguindo chegar lá … ta dando o seguinte erro:
Problem with Server response: Not found
alguem consegue me ajudar??
A
alves.Felipe
cara… acho que é mais facil vc partir para o jQueri que o rodrigo.lopes indicou…
acho que é menos trabahoso…
C
Chileno
Galera … valeu pela ajuda … o negocio ta dificil aqui … Vou dar uma olhada no Jquery e tentar implementar do jeito que o Joao me passou.
Se der certo eu posto a solução aqui pra quem tiver o mesmo problema … se nao volto a perdir Socorro!!!
Espero postar a solução
abs
R
rodrigo.lopes
Com o jquery vc pode fazer requisicoes get ou post direto para um metodo de uma action, passar parametros e receber o retorno num js.
exemplo, chamar action, passar parametros e tratar retorno
digamos que a action que esta configurada pra mim no struts-config é path="/igreja" minha action que esta no meu pacote action é IgrejaAction.java pra montar o proximo select teria que passar como parametro igreja.regional Entao ficaria assim?
detalhe que o valor do parametros ja sao injetados automaticamente nos atributos do Form, quando chegar na action so trabalho com o frm.
Form:
publicclassRSVPFormextendsActionForm{privatestaticfinallongserialVersionUID=4705492301012339047L;privateLongcodPessoa;privateIntegercodEvento;privateStringdatSessao;privateBooleanconfirmado;privateStringresposta;// get e set}
espero ter ajudado abas
C
Chileno
Pow galera valeu pela ajuda … pelo menos já consegui acionar o meu action … o unico problema é que eu nao to conseguindo popular o form … ele ta chegando null na action
é praticamente igualzinho como o colega acima ta fazendo …
Pra ter certeza que os parametros a serem enviados sao diferentes de null eu dei um alert nos dois no JavaScript e até entao ta tudo certinho
Agora eu nao entendi direito o que vc quis dizer com converters … seria o form do meu metodo execute na action??
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
IgrejaForm formulario = (IgrejaForm) form;
Igreja igreja = formulario.getIgreja();
mais uma vez obrigado pela ajuda
R
rodrigo.lopes
Cara ja sei oq é…
vc tem que setar o atributo da objeto igreja.
algo assim: igreja.id, igreja.matriz
isso deve funcionar,
caso nao, crie os atributos id e matriz no form pra ve se chega certinho
abs
C
Chileno
Nossa cara … vc estava certissimo … agora eu realmente nao entendi o porque … a unica coisa que fiz foi incluir os caras no form. Porem no form eu tava criando uma instancia do meu objeto modelo … ou seja … eles estavam lá o tempo todo!!!
Enfim … muito obrigado pela ajuda … agora é ver como eu trato esses objetos de volta
abs
C
Chileno
Galera … como faço agora pra poder pegar no JavaScript os valores que seriam populados na JSP?
antes eu tinha isso aqui na JSP