怎样封装一个json数据传递给structs后并在action中取出这个json数据呢?

怎样封装一个json数据传递给structs后并在action中取出这个json数据呢?,第1张

给你举个例子吧。struts中这样配置:

<action

name="cfg_*"

method="{1}"

class="action.CFGAction">

<result

name="cfg_edit"

type="json">

<param

name="includeProperties">

cfg.*

</param>

</result>

</action>

其中cfg_*表示jsp中调用action方法的开头,如:form的时候cfg_search.action.表示提交的时候去执行action层的search方法。

class="action.CFGAction"当然表示action这个类了。

cfg_edit表示action当前方法return的一个字符串。

type="json"表示把返回类型封装成一个json。

cfg.*表示action实例化出来的一个叫cfg的对象

这样json字符串会自动帮你把你的bean对象封装好。然后直接取数据就可以了。

首先Action中不要使用List接收参数,改成数组

private JBean[] jbs     --- 这里的对象名是jbs

因为List接收前台,需要带索引,这个比较麻烦

前台的数据格式:

{ jbs : [

{name : "张三", age : 22, sex : 1},

{name : "李四", age : 32, sex : 0},

{name : "王五", age : 24, sex : 1}

]}

注:jbs 对应Action中的对象名,

他也是个数组,里面有3个json对象,属性对应JBean对象属性

所以你现在需要的是组装自己的数据

var param = {jbs : []}

for(var i=1i<=4i++) {

var bean = {}

bean["name"] = $("#name" + i).val()

bean["age"] = $("#age" + i).val()

  bean["sex"] = $("#sex" + i).val()

param.jbs[i] = bean

}

JSP页面接收不到ACTION返回的JSON数据是因为在struts的配置文件中返回数据类型指定错误导致,正确的方法是指定application/json返回。

1、在action的配置中写法如下:

<action name="write" class="json.JsonAction" method="write" />

2、在具体要返回的方法中写法如下:

public void write() throws IOException{

HttpServletResponse response=ServletActionContext.getResponse()

/*

* 在调用getWriter之前未设置编码(既调用setContentType或者setCharacterEncoding方法设置编码),

* HttpServletResponse则会返回一个用默认的编码(既ISO-8859-1)编码的PrintWriter实例。这样就会

* 造成中文乱码。而且设置编码时必须在调用getWriter之前设置,不然是无效的。

* */

response.setContentType("application/jsoncharset=utf-8")

//response.setCharacterEncoding("UTF-8")

PrintWriter out = response.getWriter()

//JSON在传递过程中是普通字符串形式传递的,这里简单拼接一个做测试

String jsonString="{\"user\":{\"id\":\"123\",\"name\":\"张三\",\"say\":\"Hello , i am a action to print a json!\",\"password\":\"JSON\"},\"success\":true}"

out.println(jsonString)

out.flush()

out.close()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9389394.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存