Alireza Fattahi Alireza Fattahi - 2 months ago 20
JSON Question

Send JSON object to Struts 2 action by using strut2 jquery plugin tags

We can send JSON to Struts2 actions by

json
interceptor, this interceptor convert json to
List
of
Objects
. There is very good sample at http://tech.learnerandtutor.com/send-json-object-to-struts-2-action-by-jquery-ajax/.

The
json
interceptor requires that the requests
content type
be
application/json
or
application/json-rpc
this can be set when we directly use Ajax like:

$.ajax({
url: "writeJSON.action",
data: data1,
dataType: 'json',
contentType: 'application/json',


But we are using struts 2 jquery plugin tags (
sj:a
and
sj:submit
...) which manage ajax calls for us.

Is there any way that we can set the
contentType
with these tags.

I did not find tag properties for this.

If it is not implemented is there any other way to set it.

Please refer to https://github.com/struts-community-plugins/struts2-jquery/issues/86

Answer

You should set Content-type: application/json header to xhr object that is used by the $.ajax().

$.ajax({
    url: "writeJSON.action",
    data: data1,
    dataType: 'json',
    contentType: 'application/json',

The plugin is using $.ajaxSubmit(), this kind of submission should be eliminated because it doesn't work with json data.