在spring MVC中通过Ajax调用处理Blob数据



我需要在spring MVC中通过jquery Ajax调用处理Blob数据。

我正在工作的银行应用程序,我有网页,我想发送ajax请求检索所有的客户端详细信息。但问题是,在我的Pojo中,我有blob数据类型的clientImage,我无法处理。

public class Client {
 @Id
 @GeneratedValue
 private Long clientId;
 private String clientTitle;
 private int clientAge;
 private int clientRetirementAge;
 private int clientLifeExpectancy;
 private String clientFirstName;
 private String clientMiddleName;
 private String clientLastName;
 private String clientNotes;
 private String clientGender;
 private String clientDOB;
 private String clientJoint;
 private String clientEmail;
 private String clientPhoneNo;
 private String riskTolerance;
 private String status; // --- Active or notActive
 private String password;
 private String partnerAvailibility; // -- Yes or No
 private String relationshipWithPartner;
 private Blob clientImage;
    @Column(name="filename")
    private String filename;  
    @Column(name="content_type")
    private String contentType;
  // =====Client Attributes Block End=====================//
//getter and setter
....
}//end
and see my ajax request....
$.ajax({
            type: "POST",
            url: "showClientDetails.html",
            data: "clientId=" + clientId,
            success: function(response){
             //console.log(response);
 var title=response.clientTitle,firstName=response.clientFirstName,lastName=response.clientLastName,DOB=response.clientDOB,phone=response.clientPhoneNo,email=response.clientEmail,partnerAvailibility=response.partnerAvailibility;

             $("#personal-info-title-label").html(title);
             $("#personal-info-firstName-label").html(firstName);
             $("#personal-info-lastName-label").html(lastName);
             $("#personal-info-dob-label").html(DOB);
             $("#personal-info-phone-label").html(mp);
             $("#personal-info-email-label").html(email);

            },
            error: function(e){
            alert('Error: ' + e.responseText);
            }
            });

,最后看到我的弹簧控制器.....

@RequestMapping(value="/showClientDetails",method=RequestMethod.POST)
 public @ResponseBody Client showClientDetails(HttpServletRequest request,Client client) {
  //System.out.println("in show clients");
  Long clientId=Long.parseLong(request.getParameter("clientId"));
  client=userService.getClientDetails(clientId);
  return client;
 }

我只需要通过ajax请求来处理这个。所以如果你有任何解决方案,请帮助我,或者如果你知道,请提供任何链接给我。

我曾经开发过一个应用程序,它将图像数据存储在一个表中,并以类似的方式使用AJAX。我们的方法不是将blob发送给视图,而是创建一个用于查看图像的控制器,并作为我们发送给视图的域对象的一部分生成指向图像控制器的URL。在视图端(如果需要的话,我们使用了jsp),我们简单地使用了一个图像标记,并将生成的URL泵入。

在图像控制器上,我们有一个方法使用@ResponseBody,返回一个byte[]。我们从表中选择数据,在报头中设置Content Type,并返回字节[]。

自从我写了这段代码(几年前),我们有其他的例子,我们必须返回文件数据,如Excel电子表格。然而,最近我采用了不使用@ResponseBody的方法,而是创建一个自定义视图(扩展AbstractView)并将其作为ModelAndView的一部分返回。我认为这比简单地告诉Spring将输出推入HTML响应体(@RequestBody就是这样做的)要干净得多。

最新更新