[英]How to pass data to jsp and open it in new window from servlet
這是我的問題:我有一個使用數據表的表的jsp。 該表的末尾顯示了一些帶有編輯按鈕的用戶。 如果您單擊“編輯”按鈕,它將調用一個javascript函數,從表中獲取用戶ID並通過ajax $post.
傳遞它$post.
servlet的方法。 Servlet通過休眠從數據庫接收數據,並將其映射到對象中。 到目前為止,我的代碼一直有效。 現在,我想將對象傳遞給jsp並在新窗口中將其打開(彈出窗口或帶有內部表單的對象,用於使用對象中的數據設置它們以編輯被調用的用戶)。
有兩種方法可以執行此操作:客戶端渲染或服務器端渲染:
1.服務器端
您不需要該servlet,所需的是制作第二個JSP文件作為輸入表單。 然后在Javascript中,打開一個帶有Form條目JSP頁面地址的新窗口,並將userId參數添加到該頁面的查詢字符串中:
function onRowClick(userId){
//Open new window with the address: 'formEntry.jsp?userId=' + userId
}
在formEntry.jsp中,您可以從請求參數中獲取此ID:
String userId = request.getParameter("userId");
然后,您可以使用此userID檢索用戶對象:
//get user from dao or service objects
User myUser = someUserService.findUserById(userId);
然后在您的JSP頁面中,您可以創建如下輸入字段:
<input name="firstName" type="String" value="<%= myUser.getFirstName %>"
關於在jsp中使用Java代碼(注釋):您寫的不是在JSP頁面中編寫Java代碼,但是為此,您有2個選擇:
2.客戶端
第二種方法是使用更多的javascript處理任務。 您可以使用servlet方式,並讓servlet返回User對象的JSON字符串。 在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.
}
然后您可以將表單提交到Servlet並保存更新的數據。
1.最好使用JAX-RS或Spring-MVC公開RESTful服務並在javascript中使用主題,而不是使用純servlet來實現。
2.更好地利用一些客戶端MV *框架,例如angularJS或ReactJS。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.