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 *フレームワークを利用する方が良いです。
これは良いアイデアです、ありがとう。私はjspファイルでjavacodeを避けたいのですが、どうして私はサーブレットを呼び出したのですか?では、JSPでコードなしで回避策を講じる方法はありますか? userdetailsを取得するためにformEntry.jsp内の別のajaxを使用することを考えました。 – user3189986
あなたの歓迎、私の答えを更新 –