|
|
时间:2007-07-30 关键字: jquery json springMVC controller
1、在spring配置文件中加入xmlViewResolver
xml 代码
-
- <bean id="xmlViewResolver" class="org.springframework.web.servlet.view.XmlViewResolver">
- <property name="order" value="1"/>
- <property name="location" value="/WEB-INF/ajax-views.xml"/>
- </bean>
2、增加一个spring配置文件:ajax-views.xml
xml 代码
- <bean name="jsonView" class="com.xx.util.AjaxJsonView">
- <property name="contentType">
- <value>text/xml;charset=utf-8</value>
- </property>
- </bean>
3、AjaxJsonView继承AbstractView,并实现renderMergedOutputModel接口
java 代码
- response.setContentType("text/xml; charset=UTF-8");
-
- response.setHeader("Cache-Control",
- "no-store, max-age=0, no-cache, must-revalidate");
-
-
- response.addHeader("Cache-Control", "post-check=0, pre-check=0");
-
-
- response.setHeader("Pragma", "no-cache");
- JSONArray jsonArray = (JSONArray)map.get("ajax_json");
- response.getWriter().write(jsonArray.toString());
4、在controller中增加属性String jsonView,用来区分不同的view,并增加被Ajax调用的方法
java 代码
- public ModelAndView isEmptyOfCategory(HttpServletRequest request,
- HttpServletResponse response) throws Exception{
-
- boolean isAjax = RequestUtils.getRequiredBooleanParameter(request, "ajax");
-
- jsonObject.putOpt("categoryId", category_id);
- jsonObject.putOpt("categoryName", category.getName());
- isEmpty = false;
- jsonObject.putOpt("isEmpty", isEmpty);
- String view = null;
- if (isAjax) view = this.getJsonView();
- return new ModelAndView(view, "ajax_json", jsonObject);
- }
5、在jsp页面中实现ajax get方法
js 代码
- $.get('controller?method=isEmptyOfCategory',{id: id, ajax: 'true'},function(response) {
- try {
- var json = eval(response);
- for (var i = 0; i < json.length; i++) {
- alert(json[i].isEmpty);
- }
- } catch(e) {
- alert("Error in JSON response:"+e);
- }
- });
注:需要引入jquery.js,json for java和spring framework
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
| 返回顶楼 |
|
|
- zhouzhao21
- 等级: 初级会员

- 性别:

- 文章: 14
- 积分: 0
- 来自: 北京

|
呵,比我的做法好多了.我直接定义了一个新的返回的 ModelAndView .然后在解析时进行了拦截.
|
| 返回顶楼 |
|
|
- liuzongan
- 等级: 初级会员

- 性别:

- 文章: 81
- 积分: 0
- 来自: 北京

|
自定义你的VIEW层,比这个写的更简单
|
| 返回顶楼 |
|
|
- javaest
- 等级: 初级会员

- 性别:

- 文章: 20
- 积分: 75
- 来自: 苏州

|
我的作法可能与你不同,但是也是为了SpringMvc支持Ajax请求.
扩展Spring MVC 用以支持Controller对Ajax的处理
http://javaest.javaeye.com/blog/187504
|
| 返回顶楼 |
|
|
- laiseeme
- 等级: 初级会员

- 性别:

- 文章: 377
- 积分: 0
- 来自: 沈阳

|
renderMergedOutputModel是哪来的接口 还是个方法?
|
| 返回顶楼 |
|
|