2012-12-02 60 views
1

我试图从spring mvc控制器返回一个Map来做ajax调用,但我没有得到正确的答案。需要从spring mvc控制器返回json数据

我在我的配置文件中使用了mvc注释标记,并且还在我的库中包含了jackson jar文件。

对我的要求是将Map返回到我的Ajax调用的成功,所以我可以在html中修改表格行。

的控制器

代码:从阿贾克斯

@RequestMapping(value="/pricingrecall.do", method=RequestMethod.POST) 
    @ResponseBody 
    public Map<Integer,String> pricingUpdate(@RequestParam(value = "opp_Code", required = false) String opp_Code, 
      @RequestParam(value = "ref_id", required = false) String ref_id, 
      ModelMap model, 
      HttpServletRequest request, HttpServletResponse response) throws SQLException, Exception{ 

      String User="fe0777"; 
     List<CrossListViewBean>updatedRow = new ArrayList<CrossListViewBean>(); 
     //String message=""; 
     logger.info(methodLocation+"|"+"Calling pricing recall ...."); 
     Map<String, Object> result = new HashMap<String, Object>(); 
     updatedRow=crossCampService.getupdatedrowListview(opp_Code, ref_id, user); 
     Map<Integer,String> lbean= new HashMap<Integer,String>(); 
     lbean=crossCampService.getUpdatedDataPosition(updatedRow.get(0)); 
     return lbean; 

    } 

电话:

        jQuery.ajax({           
            url : '/Web/pricingrecall.do', 
       type: "POST", 
       cache : false, 
       timeout : 60000, 
       data : { 
        opp_Code :CampId , 
        ref_id : index 
       }, 
       success : function(result, textStatus, request) { 
        if(result) 
        { 
         alert(result); 
         //jQuery(".note"+index).html(data); 

        }else 
        { 
         alert("The user session has timed out. Please log back in to the service."); 
         window.location.replace("logout.do"); 
        } 
       }, 
       error : function(request, textStatus, errorThrown) { 
        alert("The system has encountered an unexpected error or is currently unavailable. Please contact the support number above if you have any questions."); 
       } 
      }); 

在这里,在阿贾克斯sucess我总是得到错误,它就会改行托特他的错误字符串。 我怎样才能从地图将JSON在阿贾克斯sucess

请帮

+0

显示一些代码。换句话说http://whathaveyoutried.com/ –

+0

已更新我的问题:要求是我需要控制器的json resposne:它应该是{1:Denver,2:texas}等 – user1457686

+0

您是否声明了json对象映射器? – mfirry

回答

0

我使用flexjson获得JSON输出正确的。我附上我的示例代码,使用flexjson。您可以将其用作参考,并重构您的控制器方法以输出correcct json。这link将帮助您如何序列化地图。

@RequestMapping(value = "/{id}", headers = "Accept=application/json") 
@ResponseBody 
public ResponseEntity<String> findUser(@PathVariable("id") Long id) { 
    User user = userService.find(id); 

    HttpHeaders headers = new HttpHeaders(); 
    headers.add("Content-Type", "application/json; charset=utf-8"); 

    return new ResponseEntity<String>(user.toJson(), headers, HttpStatus.OK); 
} 

@Entity 
public class AppUser { 
    @NotNull 
    private String firstName; 

    @NotNull 
    private String lastName; 

    //Getter Setter goes here 

    public String AppUser.toJson() { 
     return new JSONSerializer().exclude("*.class").serialize(this); 
    } 
} 
0

我用杰克逊-数据绑定,并与控制器方法注释@ResponseBody,它自动转换返回的数据成功地JSON。如果您使用maven,请将这些依赖关系添加到您的pom.xml中(jackson.version对我来说是2.4.0)。

<dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>${jackson.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-annotations</artifactId> 
     <version>${jackson.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>${jackson.version}</version> 
    </dependency> 

否则,您可以将jar文件添加到您的类路径中。

相关问题