簡體   English   中英

查找哪個JSP設置屬性為pageContext

[英]Find which JSP set attribute as pageContext

我在JSP中有以下語句(這不是我的代碼,我正在重寫其他人的代碼):

String mode = (String)pageContext.findAttribute(IParameterName.POPUPMODE);

POPUPMODE包含值(在調試過程中):EDIT

在eclipse中,我使用了“文件搜索”->“ POPUPMODE”,它的確找到了另一個我在其中找到語句的JSP(為簡潔起見簡稱):

String gnEditPopup = "popWindow('"+RequestUtility.getSiteURL(s1Request)+"?NEXT_PAGE="+I .... .... + IParameterName.POPUPMODE +"=" +I ....  user) +"</a>)"; 

然后在IParameterName java類中,我找到了'POPUPMODE'常量,該常量確實具有值'EDIT'。

我發現

<input type="hidden" name="<%=IParameterName.POPUPMODE%>" value="<%=mode%>">

我沒有找到明確的“ pageContext.setAttribute”。

現在我的問題是,我能確定自己找到設置“ POPUPMODE”屬性的正確位置了,還有什么會更優雅-而不是使用文件搜索/文本搜索來搜索文件的更智能方法?

pageContext.findAttribute的Javadoc說:

在頁面,請求,會話(如果有效)和應用程序范圍內按順序搜索命名屬性,並返回關聯的值或null。

這里的重要部分是它在尋找屬性 ,而不是參數。 您引用為屬性的可能來源的兩個代碼段被表示為請求參數,除非您的應用程序的某些部分明確將它們用作請求/會話/應用程序屬性,否則這些代碼段將不可用。

跟蹤下來很棘手。 我要嘗試的第一件事是將pageContext.findAttribute調用替換為對request.getAttributesession.getAttribute單獨調用,並查看其中哪些返回值。 至少可以告訴您是在談論請求范圍還是會話范圍的屬性。 然后,任務就是找出應用程序的哪個部分正在采用請求參數並將其設置為屬性。

您還可以嘗試編寫一個自定義servlet過濾器,該過濾器包裝傳入的請求(使用HttpServletRequestWrapper ),並在調用setAttribute時進行記錄。 那不會捕獲對HttpSession.setAttribute調用,但這只是一個開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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