精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-25
格局千秋啊.
|
|
返回顶楼 | |
发表时间:2008-07-25
Saro 写道
楼主封装的不错。
@Controller public class DemoController { @RequestMapping("list_data.do") public void list_data(Writer writer){ JSONObject obj = new JSONObject(); //........ writer.write(obj.toString()); } } 其实这样也不麻烦。
writer直接输出JSON串,是否需要设置encoding,按照UTF-8编码后的输出在浏览器上是乱码,不知有何解决方法,当然每次输出前都设置encoding是个办法,但太麻烦了。 |
|
返回顶楼 | |
发表时间:2008-07-30
stworthy 写道
Saro 写道
楼主封装的不错。
@Controller public class DemoController { @RequestMapping("list_data.do") public void list_data(Writer writer){ JSONObject obj = new JSONObject(); //........ writer.write(obj.toString()); } } 其实这样也不麻烦。
writer直接输出JSON串,是否需要设置encoding,按照UTF-8编码后的输出在浏览器上是乱码,不知有何解决方法,当然每次输出前都设置encoding是个办法,但太麻烦了。
用过滤器,spring有现成得。 |
|
返回顶楼 | |
发表时间:2008-07-30
个人感觉ajax(js+xml)在action中或者controller中等控制其中处理,即使处理的在完美,终究还要占据一定的代码量.这些代码量包括xml文件的输出和xml节点的输出.楼主的方法很不错.(因为这个问题,我换成了dwr)
|
|
返回顶楼 | |
发表时间:2008-08-04
可以基于这种方式任意扩展,现在我们在搞Flex,所以我也扩展了支持Flex HttpService的Controller。
|
|
返回顶楼 | |
发表时间:2008-08-04
我们的做法:
@Controller @RequestMapping("/agentAccount.do") public class AgentAccountController extends AbstractController{ @RequestMapping(params = "method=preValidate", method = RequestMethod.POST) public void preValidate(CrmAgentAccount agentAccount, BindingResult results, HttpServletResponse response) throws IOException { new AgentAccountValidator(agentAccount, results).validate(); ajaxOutput(response, convert2JSONString(results.getAllErrors())); } }
父类中的2个方法处理ajax输出: protected String convert2JSONString(Object object) { JSONArray jsonObject = JSONArray.fromObject(object); return jsonObject.toString(); } protected void ajaxOutput(HttpServletResponse response, String outputString) throws IOException { response.setContentType("text/html; charset=GBK"); response.getWriter().write(outputString); response.getWriter().flush(); }
|
|
返回顶楼 | |
发表时间:2008-08-05
觉得扩展写个JsonView,然后在控制器中直接返回这个JsonView,似乎更好些。
|
|
返回顶楼 | |
发表时间:2008-08-07
stworthy 写道 谢谢,我现在知道怎么做了,大体有二种方法,一是定义一个json view,二是按照Saro说的方法。
另外,在处理控制映射上,是http://www.sf.net/index.do?method=testIt的形式好些,还是http://www.sf.net/index/testIt.do的形式好些。目前大家是使用那种形式多些? 其实不需要单独实现一个controller,而只需要定义一个JsonView class就可以,当然SourceForge里面好像有人已经提交了一个JsonView的实现,你可以拿过来用的"http://sourceforge.net/project/showfiles.php?group_id=171425&abmode=1". 在Controller里面代码和一般的Controller代码没什么区别: @RequestMapping("/login_ajax.do") public String handleAjaxLogin(Model model) { model.addAttribute(JsonFieldNaming.PARA_UNLOGIN, Boolean.TRUE); return "jsonView"; } View Config in views.properties: jsonView.(class)=net.sf.json.spring.web.servlet.view.JsonView jsonView.contentType=application/json;charset=UTF-8 |
|
返回顶楼 | |
发表时间:2008-08-07
dakulaliu
的写法也不错。 我认为扩展出JSonController和JSonView的方法都是可以的,但JSonController这种方法不用在SPRINGMVC中加视图的配置了。 |
|
返回顶楼 | |
发表时间:2008-09-08
我们这的方法是直接扩展view.controller只负责获得数据,具体是jsp还是ajax都让view去决定.这样controller的耦合度就更低了.
|
|
返回顶楼 | |