2011-11-15 61 views
0

我正在发布一个json请求到服务器。我可以看到http post是在firebug中正确完成的。 (我确定json格式是有效的)java如何从请求中获取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

你如何发布数据到服务器端? –

+0

嗨,我刚刚更新了问题,现在我怎么发布数据 – Kossel

+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的参考这个

JSON Plugin for Struts2 };

希望这会帮助你

+0

非常感谢,我得到了我的问题解决:D拦截器是我失踪 – Kossel

+0

对不起,但现在当我调用jsonTest.action HttpServletRequest对象在那动作为null:S,我实现了ServletRequestAware接口,其他方法在同一个动作中工作正常 – Kossel

+0

nvm,我用(HttpServletRequest)ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);相反,并感谢 – Kossel

0

使用与它的拦截器沿着JSON Plugin; Struts 2操作将使用请求数据填充。

请注意插件文档页面上JSON的需求。