2016-07-19 35 views
0

我使用Spring MVC Hibernate,我从数据库检索区和块。区已成功显示,但当涉及到块我无法显示它们时,会出现什么问题?请帮助AJAX调用,它返回不可接受使用SPRING MVC休眠

$(document).ready(function() 
 
     { 
 
      $('#districtcode').change(function() 
 
      { 
 
      
 
       $.ajax({   
 
        type: "POST", 
 
        url: "./districtenrollment.htm", 
 
        data: "categoryCode="+ this.value, 
 
         
 
        success : function (data){ 
 
        
 
         $('#blockcode').empty();        
 
         $('#blockcode').append($("<option>").val("-1").text("Select"));     
 
         for (var i = 0; i < data.length; i++) { 
 
          $('#blockcode').append($("<option>").val(data[i][1]).text(data[i][0])); 
 
         } 
 
        }, 
 
        error: function(jqXHR, textStatus, errorThrown) { 
 
         alert("error:" + textStatus + " - exception:" + errorThrown);   
 
        } 
 
       }); 
 
        
 
      }); 
 
     });
<form:form method="POST" modelAttribute="disblo" autocomplete="off" > 
 
      <h3 id="heading"><u>Please Select</u></h3> 
 
      <table id="tab"> 
 
       <tr> 
 
        <td> 
 
         User Id: 
 
        </td> 
 
        <td> 
 
         <form:input path="myid"/> 
 
        </td> 
 
       </tr> 
 
       <tr> 
 
        <td> 
 
         User name: 
 
        </td> 
 
        <td> 
 
         <form:input path="username"/> 
 
        </td> 
 
       </tr> 
 
       <tr> 
 
        <td>Select District</td> 
 
        <td> 
 
         <form:select path="mDistricts.districtcode" id="districtcode">       
 
          <form:option value="-1">Select </form:option> 
 
          <c:forEach var="c" items="${districtlist}">          
 
           <form:option value="${c.districtcode}" >${c.districtname} 
 
           </form:option> 
 
          </c:forEach> 
 
         </form:select> 
 
        </td> 
 
       </tr> 
 
       <tr> 
 
        <td>Select Block</td> 
 
        <td> 
 
         <form:select path="mBlocks.blockcode" id="blockcode">       
 
          <form:option value="-1">Select </form:option> 
 
          <c:forEach var="c" items="${blocklist}">          
 
           <form:option value="${c.blockcode}" >${c.blockname} 
 
           </form:option> 
 
          </c:forEach> 
 
         </form:select> 
 
        </td> 
 
       </tr> 
 

 
      </table> 
 
     </form:form>

`

这是我的控制器

@Autowired 
    private D_BDAO d_bdao; 

    @RequestMapping(value="Dist_Block.htm", method = RequestMethod.GET) 
    public ModelAndView getmodel(@ModelAttribute("disblo") usertestDisBlock db, HttpSession session) { 
     List<MDistricts> districtlist = d_bdao.getAllCategory(); 
     org.springframework.web.servlet.ModelAndView model = new org.springframework.web.servlet.ModelAndView("Dist_Block"); 
     model.addObject("districtlist", districtlist); 
     System.out.println("after model"); 
     return model; 
    } 

    @RequestMapping(value = "/districtenrollment.htm", method = RequestMethod.POST) 
    public @ResponseBody 
    List<MBlocks> getmodel1(@RequestParam("categoryCode") Integer categoryCode) { 
     System.out.println("categoryCode="+categoryCode); 
     List<MBlocks> blocklist; 
     System.out.println("i'm here in ajax controller "); 
     blocklist = d_bdao.getAllBlocks(categoryCode); 
     System.out.println("i'm here after b_dao "); 
     System.out.println("c " + blocklist); 
     return blocklist; 
    } 

这是我的DAO实现

@Override 
    public List<MDistricts> getAllCategory() { 
     org.hibernate.Session session = sessionFactory.openSession(); 
     session.beginTransaction(); 
     String hql = "from MDistricts"; 
     Query query = session.createQuery(hql); 
     List<MDistricts> districtlist = query.list(); 
     session.close(); 
     return districtlist; 
    } 

    @Override 
    public List<MBlocks> getAllBlocks(Integer districtcode) { 
     org.hibernate.Session session = sessionFactory.openSession(); 
     session.beginTransaction(); 
     SQLQuery q = session.createSQLQuery("select blockname, blockcode from test_schema.m_blocks where districtcode=:districtcode ORDER BY blockname"); 
     q.setParameter("districtcode", districtcode); 
     List<MBlocks> blocklist = q.list(); 
     session.close(); 
     System.out.println("blocklist" + blocklist); 
     return blocklist; 
    } 
+0

请添加代码。 –

+0

是的,我已经重新编辑我的帖子。在此先感谢v.ladynev –

+0

谢谢Usman Maqbool –

回答

0

我不是一个心灵感应器。但是我可以做一个假设(因为你没有提供足够的信息:错误堆栈跟踪,实体类)。

此代码是不正确

SQLQuery q = session.createSQLQuery("select blockname, blockcode from test_schema.m_blocks where districtcode=:districtcode ORDER BY blockname"); 
q.setParameter("districtcode", districtcode); 
List<MBlocks> blocklist = q.list(); 

session.createSQLQuery()不返回List<MBlocks>,但List<Object[]>。试用HQL代码:

Query q = session.createQuery(
    "from MBlocks where districtcode = :districtcode order by blockname"); 
q.setParameter("districtcode", districtcode); 
List<MBlocks> blocklist = q.list(); 

并尝试记录错误。

+0

问题已解决。谢谢 –

+0

@ Boss.H不客气。那么你用我的答案解决了它? –

+0

不,这是我的问题,像json-simple和json这样的JQuery和Jar文件都为我做了这项工作,问题出在了映射中。但是,我想感谢你的支持,保持它:)你想让我给你解决问题?如果是的话,请给我你的电子邮件ID –