这是我的问题:我有一个使用数据表的表的jsp。它会在表格末尾显示一些带有编辑按钮的用户。如果你点击"编辑"按钮,它调用一个javascript函数从表中获取userID并通过ajax $post.
方法将其传递给servlet。
servlet通过hibernate从数据库接收数据并将其映射到对象中。
我的代码工作到此为止。现在我想将对象传递给jsp并在一个新窗口中打开它(一个弹出窗口或里面有一个窗体的东西,用来设置对象中的数据来编辑被叫用户)。
答案 0 :(得分:0)
有两种方法可以执行此操作:客户端渲染或服务器端渲染:
1.服务器端
您不需要该servlet,您需要的是为输入表单创建第二个JSP文件。在您的Javascript中,打开一个带有表单条目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.Client Side
第二种方法是使用更多的javascript来处理任务。 您可以使用servlet方式,让servlet返回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.
}
然后您可以将表单提交给servlet并保存更新的数据。
1.最好使用JAX-RS或Spring-MVC来公开RESTful服务,并在javascript中使用主题,而不是使用纯servlet执行此操作。
2.更好地利用一些客户端MV *框架,如angularJS或ReactJS。