有两种方法可以做到这一点:客户端绘制或服务器端渲染:
1.Server侧
你不需要这个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 %>"
关于使用Java代码在JSP(评论): 您将在JSP页面中不写Java代码写的,但为此目的,你有两个选择:
- 使用一些服务器端MVC框架像JSF从你的模型和控制器
- 使用纯JSP分开的看法,但不要使用JSP,只有服务层较低的水平层,也最好有一些标签库来降低内部的JSP
所需的Java代码
2.Client侧
第二种方法是使用更多的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.It最好使用JAX- RS或Spring-MVC来公开RESTful服务并在javascript中使用主题,而不是使用纯servlet来完成此操作。
2.更好地利用一些客户端MV *框架,如angularJS或ReactJS。
这是一个好主意,谢谢。我想避免在jsp文件中的javacode,这就是为什么我调用一个servlet。那么,您是否有任何想法,如何在jsp中无需代码的情况下采取您的解决方法?我想在formEntry.jsp中使用另一个ajax来获取userdetails。 – user3189986
欢迎您,更新我的答案 –