有两种方法可以做到这一点:客户端渲染或服务器端渲染:
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");
然后您可以使用此用户 ID 来检索您的用户对象:
//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 个选项:
- 使用一些服务器端 MVC 框架(如 JSF)将视图与模型和控制器分开
- 使用纯 JSP,但不要在 JSP 中使用较低级别的层,仅使用服务层,并且最好有一些标记库以减少 JSP 中所需的 Java 代码
2.客户端
第二种方法是使用更多的javascript来处理任务。
您可以使用您的 servlet 方式并让您的 servlet 返回用户对象的 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 或 2 种形式,但如果您正在开发更大的软件,则需要使用更多的工具和框架:
1.最好使用 JAX-RS 或 Spring-MVC 来公开 RESTful 服务并在 javascript 中使用主题,而不是使用纯 servlet。
2.更好地利用一些客户端 MV* 框架,如 angularJS 或 ReactJS。