![](/img/trans.png)
[英]RequestDispatcher.forward() not forwarding when servlet called via Ajax POST
[英]How to forward to an internal page link from a servlet with RequestDispatcher
我有一個jsp頁面,在頁面中間有一個下拉控件。 當用戶更改下拉菜單的選擇時,頁面將提交給Servlet,然后轉發回同一頁面,其中包含有關要顯示的用戶選擇的詳細信息。 我希望頁面自動導航回下拉菜單,而用戶不必自己滾動回去。
在檢索適當數據的代碼之后的servlet中,我具有:
String forwardTo = "/WEB-INF/jsp/task-create.jsp#taskTypeSelection"
request.getRequestDispatcher(forwardTo).forward(request, response);
我希望servlet進入的jsp中的鏈接位於下拉控件上方,如下所示:
<a name="taskTypeSelection" id="taskTypeSelection"></a>
<select class="form-control" id="taskTypeID" name="taskTypeID">
<option value="">Select a task type.</option>
<option...
但是,這不起作用,並且Dispatcher嘗試轉發時出現404錯誤。 在將我當前的設置與RequestDispatcher一起使用時,有什么方法可以使這項工作生效? 我認為如果使用HttpServletResponse.sendRedirect,這將是一個較小的問題,但是我使用RequestDispatcher來提高安全性,因為我將所有jsps都放在了WEB-INF文件夾中,因此sendRedirect無法訪問(至少那是我的理解。這對我來說是很多新知識。
謝謝!
這更多是基於Quan Nguyen的幫助而不是原始問題的答案。
在servlet中,我只是將請求變量“ scrollTo”設置為名稱(如果我要轉發的頁面轉到該鏈接的ID)。 然后,我創建了一個JS腳本(基於jQuery滾動到element ),以查找“ scrollTo”請求變量(使用JSTL el),該變量在文檔的ready()事件上觸發。 如果找到一個,則它將頁面滾動到所指示的jsp中的鏈接。
Servlet:
request.setAttribute("scrollTo", "taskSelection");
JS腳本:
$(document).ready(function(){
var scrollTo = "${scrollTo}";
if(scrollTo !== "" && scrollTo!== null && scrollTo !== undefined){
$('html, body').animate({
scrollTop: $("#" + scrollTo).offset().top
}, 0);
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.