0

我需要通过 Spring MVC 中的 jquery Ajax 调用来处理 Blob 数据。

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

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);
            }
            });

终于看到我的 Spring Controller .....

@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 请求来处理这个问题。因此,如果您有任何解决方案,请帮助我,或者如果您知道,请为我提供任何链接。

4

1 回答 1

1

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

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

自从我(几年前)编写该代码以来,我们还遇到过其他必须返回文件数据的实例,例如 Excel 电子表格。然而,最近,我采取了不使用@ResponseBody 的方法,而是创建一个自定义视图(扩展AbstractView)并将其作为ModelAndView的一部分返回。我认为这比简单地告诉 Spring 将您的输出推送到 HTML 响应正文中要干净得多,这就是 @RequestBody 正在做的事情。

于 2013-03-01T14:37:02.077 回答