struts2 的 ajax 问题
jlpf
2009-02-16
我正在学习struts2,要做一个功能, url : 'deleteCategory.action', 来发出请求,并等待返回结果, 问题是,struts的action能给我返回一个xml么? 用什么做呢,json可以么?
|
|
kyo100900
2009-02-16
struts2 当然可以给你返回一个你所要的xml,比如
public class CategoryAction extends ActionSupport{ public void deleteCategory(){ HttpServletResponse response = ServletActionContext.getResponse(); PrintWriter out = response.getWriter(); out.print("删除成功"); out.close(); } } |
|
jlpf
2009-02-16
非常感谢,我是新人,还要好好学习啊。
|
|
OuYangGod
2009-02-17
struts2的action的不可以用httpServletResponse向浏览器写的吧,应该生成一个文本格式的xml字串,返回类型用stream.
比如: <result name="success" type="stream"> <param name="contentType">text/xml</param> <param name="inputName">is</param> </result> is是action中的InputStream. 比如: ByteArrayOutputStream os=new ByteArrayOutputStream(); os.write("<result>\n".getBytes()); for(PrincipalHolder item : principalList) { os.write("<principal>\n".getBytes()); os.write(("<name>"+"<![CDATA["+item.getPrincipalName()+"]]>"+"</name>\n").getBytes()); os.write(("<code>"+"<![CDATA["+item.getPrincipalCode()+"]]>"+"</code>\n").getBytes()); os.write(("<oid>"+"<![CDATA["+item.getPrincipalOid()+"]]>"+"</oid>\n").getBytes()); os.write(("</principal>\n").getBytes()); } os.write("</result>".getBytes()); is=new ByteArrayInputStream(os.toByteArray()); |
|
KimShen
2009-02-17
方法1 返回result type=plaintext
方法2 返回result type=xslt 方法3 返回result type=stream stream对应一个JDOM的Xpath 3种方法对应不同情况使用 |
|
wuxi7227
2009-02-17
在下使用两种办法,一种result type ="json" ,action调用json plugin。 二,象一般action一样返回,只不过result是一个空白页,response里自己写JSON字符流
|
|
zonto
2009-02-17
转换成JSON很简单
1,导入jsonplugin.jar 2,将struts.xml中struts-default 改成json-default 3,返回类型改为<result name="json" type="json"/> 完成! 这样会将所有action中的getXXX()的方法 都转换成JSON数据 如果有不想转换的可在getXXX()方法前加@JSON(serialize=false) |
|
jlpf
2009-02-17
谢谢各位的帮助,我尝试了三种办法,都能够实现:
1: 使用json plugin 2: HttpServletResponse response = ServletActionContext.getResponse(); PrintWriter out = response.getWriter(); out.print("删除成功"); out.close(); 3: <result name="success" type="stream"> <param name="contentType">text/xml</param> <param name="inputName">is</param> </result> 在次谢谢各位!! |
|
qt03061127
2009-02-19
自己写一个RESULTTYPE:
public class XmlResultType extends StrutsResultSupport ... protected void doExecute(String finalLocation, ActionInvocation invocation) throws Exception{ HttpServletResponse response = (HttpServletResponse) invocation.getInvocationContext().get( HTTP_RESPONSE); /*定义RESPONSE的返回类型*/ response.setContentType(...); PrintWriter out = response.getWriter(); String result = (String) invocation.getStack().findValue(yorValueName); /*下面输出result*/ } |
|
qt03061127
2009-02-19
可以在ACTION中直接组装好XML对象后转换撑STRING,随便用什么解析器,比如JDOM
组装好DOCUMENT后,在XmlResultType中取得DOCUMENT(用值栈或者REQUEST总有办法传递过去的),然后这样输出: HttpServletResponse resp= (HttpServletResponse) invocation.getInvocationContext().get(HTTP_RESPONSE); XMLOutputter out = new XMLOutputter(); resp.setCharacterEncoding("UTF-8"); resp.setContentType("application/xml; charset=UTF-8"); out.output((Document)doc, resp.getWriter()); 概念性的随便写写,自己摸索下 |