spring註解@ResponseBody處理ajax請求,json資料類型__js

來源:互聯網
上載者:User

           最近做了一個spring+ajax 二級串聯功能表,總是報各種錯誤,最後經過分析總結終於解決此問題,現在把問題展示給大家,以供分享。如有問題可以評論,肯定支援。

json需要引用的JSON包有:jackson-core-asl-1.9.13.jar,jackson-mapper-asl-1.9.13.jar,版本並不是固定的,只是這兩個的版本一樣就行了

         controller層:

@RequestMapping(value = "branchMap")
 @ResponseBody
 public List<Temp> getBranchMap(HttpServletRequest request) {
  String tmp = request.getParameter("organizid");
  Long id = Long.parseLong(tmp);
  return serviceManager.getBranchMap(id);
 }

         service層:

public List<Temp> getBranchMap(Long id) {
  return institutionsDao.getBranchMap(id);
 }

         dao層:(其中Temp是臨時類,就是institutions類想要的欄位組成的類)

 public List<Temp> getBranchMap(Long id) {
  List<Temp> lt = new ArrayList<Temp>();
  String sql = "select s.id,s.name from institutions s where s.parent=?";
  Session session = this.getSession();
  SQLQuery sqlQuery = session.createSQLQuery(sql);
  sqlQuery.setLong(0, id);
  sqlQuery.addScalar("id", Hibernate.LONG);
  sqlQuery.addScalar("name", Hibernate.STRING);
  sqlQuery.setResultTransformer(Transformers
    .aliasToBean(Institutions.class));
  List<Institutions> list = sqlQuery.list();
  if (list.size() <= 0) {
   Temp t = new Temp();
   t.setId(0L);
   if (id == -1) {
    t.setName("請先選擇機構");
   } else {
    t.setName("該機構沒有分支");
   }
   lt.add(t);
   return lt;
  }
  for (int i = 0; i < list.size(); i++) {
   Institutions ins = list.get(i);
   Temp t = new Temp();
   t.setId(ins.getId());
   t.setName(ins.getName());
   lt.add(t);
  }
  return lt;
 }

 

       jsp層:

       var val=$("#organization option:selected").val();
       $.ajax({
           type:"post",
           url:"${ctx}/account/user/branchMap",
           dataType:"json",
           async:false,
           data:{organizid:val},
           success:function(data){
            $("#branch").html("");
               $.each(data,function(i,item){
                   $("#branch").append("<option value="+item.id+">"+item.name+"</option>");
               });
           }
       });

然後在對應的spring-mvc.servlet.xml中添加配置

<!--
  @ResponseBody之後返回字串中中文可能會出現亂碼 因為sping
  mvc預設是text/plain;charset=ISO-8859-1,要支援中需做如下配置指定編碼格式
 -->

 <bean
  class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
  <property name="messageConverters">
   <list>
    <bean
     class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
     <property name="supportedMediaTypes">
      <list>
       <!--返回字串格式json-->
       <value>application/json;charset=UTF-8</value>
      </list>
     </property>
    </bean>
   </list>
  </property>
 </bean>

 

 

只要後台查詢查詢的結果集是list<XXX>泛型的list集合然後把controller層標註上 @ResponseBody,前台調用此方法,並在$.ajax中標示為dataType:"json",  async:false,即可。

 

 

   

 

        

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.