2016-04-25 143 views
0

这是我的问题:我有一个使用数据表的表。它在表格的结尾处显示一些具有编辑按钮的用户。如果你点击“编辑”按钮,它会调用一个javascript函数从表中获取userID,并通过ajax $post.方法将它传递给一个servlet。 servlet通过hibernate从数据库接收数据并将其映射到对象中。我的代码一直工作到这一点。现在我想将对象传递给一个jsp,并在一个新窗口中打开它(一个弹出窗口或者一个内部窗体用于设置它们与来自对象的数据来编辑被调用用户)。如何将数据传递给jsp并在servlet中的新窗口中打开它

  • 我可以从servlet中完成吗?或者我必须从ajax做到这一点,当 的调用成功了吗?

回答

0

有两种方法可以做到这一点:客户端绘制或服务器端渲染:

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。

+0

这是一个好主意,谢谢。我想避免在jsp文件中的javacode,这就是为什么我调用一个servlet。那么,您是否有任何想法,如何在jsp中无需代码的情况下采取您的解决方法?我想在formEntry.jsp中使用另一个ajax来获取userdetails。 – user3189986

+0

欢迎您,更新我的答案 –

相关问题