在我的CRUD MVC Web应用程序中,有一个users.jsp
servlet调用的/users
页面,该页面显示了用户分页表,每个用户都有执行操作的按钮(例如,授予管理员权限)但不要重定向到单独的jsp页面。通过单击按钮时调用一个单独的servlet来执行该操作:
<button formaction="changeUserRights">Grant admin rights</button>
changeUserRights
servlet执行相应的数据库操作并调用
resp.sendRedirect("/users")
呈现分页并重定向到users.jsp
。
但是,当我在页面2+上单击Grant admin rights
按钮时(例如users?page=3
),应用程序会将我重定向到默认页面/users
。
如何使应用程序停留在同一页面上,即保存page
参数?我知道如何将参数另存为请求属性,并将其传递给同一请求中的其他servlet,但据我所知,我在单击按钮时创建了一个新请求。我想我可以将参数保存在sessionScope
中,但是我相信有更好的方法。那么,如何通过jsp发出的新请求将此参数传递给/changeUserRights
servlet?
我在SO上阅读了几篇有关如何保持在同一页面上的帖子,例如this one,但不知道如何将其应用于我的问题。
谢谢。
答案 0 :(得分:0)
好,那很容易。
<button formaction="changeUserRights?page=${currentPage}">Grant admin rights</button>
其中currentPage
是由在Web应用程序中执行页面分页的服务设置的请求属性。
changeUserRights
servlet中读取参数:String pageNumber = "1";
if (req.getParameter("page") != null) {
pageNumber = req.getParameter("page")
}
/users
时传递参数:resp.sendRedirect("/users?page=" + pageNumber);