2016-04-25 8 views
0

これは私の問題です:私はdatatablesを使ってテーブルを持つjspを持っています。これは、テーブルの最後に編集ボタンが表示されているユーザーを表示します。 "編集"ボタンを押すと、テーブルからuserIDを取得するjavascript関数を呼び出し、ajax $post.メソッドを介してサーブレットに渡します。 サーブレットは、hibernateを介してデータベースからデータを受信し、オブジェクトにマップします。 私のコードはこの時点まで動作します。今私は、オブジェクトをjspに渡して、新しいウィンドウ(ポップアップや、オブジェクトからのデータを設定して、呼び出されたユーザーを編集するためのフォームのあるもの)を開きたいとします。jspにデータを渡してサーブレットから新しいウィンドウで開く方法

  • 私はサーブレットから実行できますか?または、 呼び出しが成功すると、私はajaxからそれを行う必要がありますか?

答えて

0

2つのこれを行うためのアプローチがあります:クライアント側レンダリングやサーバー側のレンダリング:

1.Serverサイド

あなたはそのサーブレットを必要としない、あなたが必要なものにあります入力フォーム用の2番目のJSPファイルを作成します。そして、あなたのJavaScriptで、フォーム入力JSPページアドレスで新しいウィンドウを開き、そのページのクエリ文字列にはuserIdパラメータを追加します。

function onRowClick(userId){ 
    //Open new window with the address: 'formEntry.jsp?userId=' + userId 
} 

とformEntry.jspであなたはリクエストパラメータからこのIDを取得することができます:

//get user from dao or service objects 
User myUser = someUserService.findUserById(userId); 

そして、JSPページでは、このようなあなたの入力フィールドを作成することができます:

String userId = request.getParameter("userId"); 

次に、あなたのユーザーオブジェクトを取得するには、このユーザーIDを使用することができます

JSP(コメント)にJavaコードの使用について
<input name="firstName" type="String" value="<%= myUser.getFirstName %>" 

: あなたはJSPページにJavaコードを書いていない程度の書き込みですが、その目的のためにあなたは2つのオプションがあります:

  • いくつかのサーバー側MVCフレームワークを使用しますJSFのようなあなたのモデルとコントローラ
  • 使用純粋なJSPからビューを分離するが、JSPの
内部に必要なJavaコードを減少させるために、いくつかのタグライブラリを持っているために、JSPでのみサービス層とも優れたを低いレベルのレイヤを使用していません


2.Clientサイド

第二の方法は、タスクを処理するために、より多くのJavaScriptを使用することです。 サーブレットのやり方で、サーブレットでUserオブジェクトのJSON Stringを返すことができます。 JavaScriptでは、あなたはJSONを取得し、それを解析し、HTMLタグ内にそのフィールドを置く:

function ajaxRequestSuccessHandler(data){ 
    var user = //parse data and make a javascript object 
    document.getElementById('firstName').value = user.firstName; 
    .... 
    //load all of data in your form. 
} 

、その後、あなたはサーブレットにフォームを提出し、更新されたデータを保存することができます。このアプローチは、1つのまたは2形態のために良いですが、あなたは、より大きなソフトウェアを開発しているならば、あなたはいくつかのより多くのツールやフレームワークを使用する必要があること

  • 注:

使用する1.Itのより良いJAX- RSまたはSpring-MVCを使用してRESTfulなサービスを公開し、純粋なサーブレットではなくjavascriptでテーマを使用します。

2. angularJSやReactJSのようなクライアントサイドのMV *フレームワークを利用する方が良いです。

+0

これは良いアイデアです、ありがとう。私はjspファイルでjavacodeを避けたいのですが、どうして私はサーブレットを呼び出したのですか?では、JSPでコードなしで回避策を講じる方法はありますか? userdetailsを取得するためにformEntry.jsp内の別のajaxを使用することを考えました。 – user3189986

+0

あなたの歓迎、私の答えを更新 –