传入的请求网址如下:/{root}/Details/View/{id}
。我有一个servlet DetailsController
,它基于一个人是否登录将显示“编辑”视图或“详细信息”视图:
if (user != null) {
detailsViewModel.setUser((User) user);
getServletContext().getRequestDispatcher("/edit.jsp").forward(request, response);
} else {
getServletContext().getRequestDispatcher("/details.jsp").forward(request, response);
}
在修改视图中,有一个包含action="Update"
的表单,我只想让它转到UpdateController
上的/{root}/Update
,但它正试图转到/{root}/Details/View/{id}/Update
。我已设置上下文根但可用。
如果我放action="/Update"
,它会尝试在没有根的情况下转到localhost:8080/Update
。这是因为我正在使用前锋吗?我怎样才能解决这个问题?如果我遗漏了你需要的细节,请告诉我。
答案 0 :(得分:2)
您需要在EL中HttpServletRequest#getContextPath()
的帮助下在表单操作URL中添加上下文路径。
<form action="${pageContext.request.contextPath}/Update">
这样就变成了"/{root}/Update"
。