簡體   English   中英

如何使用RequestDispatcher從Servlet轉發到內部頁面鏈接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM