我正在向服务器发布json请求。我可以看到http帖子在firebug中正确完成。 (我确定json格式有效)
例如。 {datas:[{“a”:1,“b”:2},{“a”:5,“b”:6}]}
我的问题是,如何在服务器端恢复此数据?我读过有人说使用request.getInputStream
,但无法想出如何将其转换为字符串或使用GSON解析。
另一个问题:我可以发布json字符串大小的限制吗?
(Struts 2)
dojo.xhrPost({
url: "sub/sub/theAction",
postData: dojo.toJson(json),
handleAs:'json',
headers: { "Content-Type": "application/json; charset=utf-8"},
load: function(data) {
alert("done");
}
}
});
提前致谢
答案 0 :(得分:1)
我不确定DOJO如何工作或发布数据,但相信必须与其他javascript框架相同。 这是我们可以做的,以实现你想要做的事情
<package name="demojson" extends="struts-default,json-default">
<action name="jsonTest" class="com.demo.action.JsonTestAction">
<interceptor-ref name="json">
<param name="contentType">application/json</param>
</interceptor-ref>
<result type="json"/>
</action>
</package>
public class JsonTestAction extends ActionSupport
{
private static final long serialVersionUID = 1L;
private Map data = new HashMap();
// log decelaration
public Map getData()
{
return data;
}
public void setData(Map data)
{
this.data = data;
}
@Override
public String execute()
{
logger.log(Level.FINE, "action parameters: " + data);
return SUCCESS;
}
}
var submit = function()
{
var data = {data: {j1 : 'one', j2: 'two', j3: [1, 2, 3, 4, 5], j4: {a: 'A', b: 2, c: '3'}, j5: 2, j6: '2'}};
jQuery.ajax(
{
type: 'POST',
url: '/blah/jsonTest.action',
data: jQuery.toJSON(data),
dataType: 'json',
async: false ,
contentType: 'application/json; charset=utf-8',
success: do what you want here}
});
json如何与Struts2一起使用
希望这会对你有所帮助
答案 1 :(得分:0)
使用JSON Plugin及其拦截器;将使用请求数据填充Struts 2操作。
请注意插件文档页面上的JSON要求。