0

spring MVC で jquery Ajax 呼び出しを介して Blob データを処理する必要があります。

すべてのクライアントの詳細を取得するために ajax リクエストを送信する Web ページがある銀行アプリケーションに取り組んでいます。しかし、問題は、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 を使用するアプリに取り組んだことがあります。私たちのアプローチは、ブロブをビューに送信するのではなく、画像を表示するためのコントローラーを作成し、ビューに送信するドメイン オブジェクトの一部として、画像コントローラーを指す URL を生成することでした。ビュー側 (必要に応じて JSP を使用していました) では、単純にイメージ タグを使用して、生成された URL を送り込みました。

Image Controller には、@ResponseBody を使用して byte[] を返すメソッドがありました。テーブルからデータを選択し、ヘッダーにコンテンツ タイプを設定し、byte[] を返しました。

私がそのコードを書いて以来 (数年前)、Excel スプレッドシートなどのファイル データを返さなければならない場合がありました。しかし最近、私は @ResponseBody を使用せず、カスタム ビュー ( AbstractViewを拡張) を作成し、それをModelAndViewの一部として返すというアプローチを取りました。これは、@RequestBody が行っている HTML 応答本文に出力を押し込むように単に Spring に指示するよりも、はるかにクリーンなアプローチだと思います。

于 2013-03-01T14:37:02.077 に答える