struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From José Manuel Sendín Cruz <jmanuel.sendin.c...@gmail.com>
Subject Re: Doest struts 2 accept “POST” method to send data from javascript to an Action server?
Date Fri, 16 Dec 2011 14:28:43 GMT
Solved. My mistake by sending wrong datatype. Content-Type must be
application/x-www-form-urlencoded.

Thank you.

2011/12/16 José Manuel Sendín Cruz <jmanuel.sendin.cruz@gmail.com>

> Hello Maurizio, thanks.
>
> Headers sended as "GET" are:
>
> Host localhost:8080User-AgentMozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0)
> Gecko/20100101 Firefox/8.0 Acceptapplication/json, text/javascript, */*;
> q=0.01 Accept-Languagees-es,es;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encodinggzip,
> deflateAccept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7Connection keep-alive
> Content-Typeapplication/json; charset=utf-8 X-Requested-WithXMLHttpRequest
> Refererhttp://localhost:8080/Aplicacion/prueba.jsp Cookie
> JSESSIONID=A650C235C78B2657B14534363D938F80
>
> And parameters are sended as:
>
> customData someinfojgGridData[{"id":"1","direccion":"Calle del Pardo
> 3","nombre":"Paco1"},{"id":"2","direccion":"Calle del Pardo 2","nombre":"Paco2"},{"id":"3","direccion":"Calle
> del Pardo 1","nombre":"Paco3"}]
> So, it seems be ok. Not as POST:
>
>
> Headers sended as "POST" are:
> Hostlocalhost:8080User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0)
> Gecko/20100101 Firefox/8.0Accept application/json, text/javascript, */*;
> q=0.01Accept-Languagees-es,es;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encodinggzip,
> deflate Accept-CharsetISO-8859-1,utf-8;q=0.7,*;q=0.7Connection keep-alive
> Content-Typeapplication/json; charset=utf-8 X-Requested-WithXMLHttpRequest
> Refererhttp://localhost:8080/AplicacionDiet99/prueba.jsp Content-Length334
> CookieJSESSIONID=A650C235C78B2657B14534363D938F80
> And parameters!!!:
>
>
> jgGridData=%5B%7B%22id%22%3A%221%22%2C%22direccion%22%3A%22Calle+del+Pardo+3%22%2C%22nombre%22%3A%22Paco1
> %22%7D%2C%7B%22id%22%3A%222%22%2C%22direccion%22%3A%22Calle+del+Pardo+2%22%2C%22nombre%22%3A%22Paco2
> %22%7D%2C%7B%22id%22%3A%223%22%2C%22direccion%22%3A%22Calle+del+Pardo+1%22%2C%22nombre%22%3A%22Paco3
> %22%7D%5D&customData=someinfo
>
> So, you might be right. How can I send as GET format by POST method?
>
>
>
> 2011/12/16 Maurizio Cucchiara <maurizio.cucchiara@gmail.com>
>
>> I'm not sure, but if I recall correctly that could be an encoding issue.
>> In such case firebug plugin or chrome console might be very usefull.
>>
>> Sent from my mobile device, so please excuse typos and brevity.
>>
>> Maurizio Cucchiara
>>
>> Il giorno 16/dic/2011 12.23, "José Manuel Sendín Cruz" <
>> jmanuel.sendin.cruz@gmail.com> ha scritto:
>>
>> > [I tried to simplifie the code to better understand the questions]When I
>> > tried to send data from a web side client to an ActionClass in Struts 2
>> > like:
>> >
>> > CLIENT SIDE:
>> > -----------------------------------------
>> >    jQuery("#bedata").click(function(){ //Function for button "bedata"
>> >
>> >     var postData = "SOME DATA TO SEND"
>> >
>> >    //Sendin data:
>> >    $.ajax({
>> >        type: "POST", //Method to send the data. I would need "post"
>> method
>> > as better option.
>> >        url: "GuardaFila.action", //Action called to data treatament
>> >        data : {
>> >            jgGridData: postData, //PARAMETER jgGrdData with variable
>> > "postData" value
>> >            customData: "someinfo" //Just another parameter called
>> > "customData" with more data,
>> >        },
>> >
>> >
>> >    /** START: handlers for request. Not important for this trouble **/
>> >        dataType:"json",
>> >        contentType: "application/json; charset=utf-8",
>> >        success: function(response, textStatus, xhr) {
>> >            alert("success");
>> >         },
>> >        error: function(xhr, textStatus, errorThrown) {
>> >            alert("error");
>> >        }
>> >    /** END: handlers for the request. **/
>> >    });
>> >    });
>> >
>> >
>> > ----------
>> >
>> >
>> > I wanted to autofill "jgGridData" and "customData" attributes from
>> > ActionClass that is called when "CargaTabla.action" is invoked. But if
>> type
>> > is POST, it doesnt work.
>> > Just changing POST type in ajax type of sending, turning on "GET", it
>> works
>> > fine. The call to CargaTabla.action ActionClass setters methods for the
>> > jgGridData and customData has done properly.
>> >
>> >
>> >
>> > SERVER SIDE:
>> > My struts.xml piece of significant code is:
>> >
>> >    <action name="GuardaFila" method="guardarUsuario"
>> > class="org.json.JSONRespuestaTabla">
>> >        <result name="success" type="json" />
>> >    </action>
>> >
>> > So, GuardaFila action in its method "guardarUsuario" is properly called
>> in
>> > debuggin. A simplified version of ActionClass
>> (org.json.JSONRespuestaTabla)
>> > is:
>> >
>> > public class JSONRespuestaTabla extends ActionSupport{
>> >
>> >    String jgGridData = "Old data to be refilled from client";
>> >    String customData = "Old data to be refilled from client";
>> >
>> >    @Override
>> >    public String execute() {
>> >        //Some stuff
>> >        return SUCCESS;
>> >    }
>> >
>> >    //Getters and Setter of attributes.
>> >
>> >    public void setJgGridData(String resultado){
>> >        System.out.append(resultado);
>> >    }
>> >    public String getJgGridData(){
>> >        return this.jgGridData
>> >    }
>> >    public String getCustomData() {
>> >        return customData;
>> >    }
>> >    public void setCustomData(String customData) {
>> >        this.customData = customData;
>> >    }
>> >
>> >    //And the method called and defined in struts.xml (properly called)
>> >    public void guardarUsuario(){
>> >       //Some stuff.
>> >       return;
>> >    }
>> >
>> > Well, so. If Javascript send the parameters in GET mode, SETTERS are
>> > working nice, and I can get "SOME DATA TO SEND" on my ActionClass
>> > JSONRespuestaTabla setted automatically, ready to work with. But if
>> > JavaScript sends this data in POST mode, Struts doesnt call the setters,
>> > and I am not able to recieve the data into the class that handle the
>> > action.
>> >
>> > How it comes that? I cant understand why it happens.
>> >
>> > I am using jquery, json and tiles plugin for struts2.
>> >
>> > Thank you for your help.
>> >
>>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message