将JSON从动作类传递给JSP,而不在struts中使用Ajax

时间:2013-10-29 18:59:51

标签: jquery ajax json jsp struts

在JSP中,我可以使用下面的代码从动作类中获取JSON。有人可以告诉我是否有办法从动作类接收响应(JSON)而不使用Ajax?

$.ajax({
url:"/StrutsExample1/helloWorld.do",
data:params,
type: "post",
dataType:"json",
success:function(response){
          $.each(response,function(i){  
              $.each(response[i],function(key,value){
                 $('#info').html(key+" "+value);})
           })
},
    error:  function(e){ alert("fail " + e);}                   
})

更新:

动作类中使用以下代码。

response.setContentType("text/json; charset=utf-8");
JSONObject json = createJsonObject();  //to construct the JSON
PrintWriter out = response.getWriter();
out.print(json);
out.flush();
return mapping.findForward("success");

在struts-config.xml中,我在动作映射中有以下内容:

<action path="/helloWorld" type="test.action.HelloWorldAction" name="helloWorldForm">
<forward name="success" path="/index.jsp" />

然后,在JSP文件中,不是像上面那样使用Ajax调用,它看起来像:

$(function(response){
   $.each(response,function(i){ 
              $.each(response[i],function(key,value){
                 $('#info').html(key+" "+value);})
           })
})

但是,执行时未定义键和值。 JSON是在动作类中正确构造的。请帮助指出如何将JSON传递给jsp。

1 个答案:

答案 0 :(得分:-1)

是。你可以以正常的方式做。通过提交页面,您可以访问操作类并将响应设置为

response.setContentType("application/json");