我在JSP中有这个语句(它不是我的代码,我正在重写别人的代码):
String mode = (String)pageContext.findAttribute(IParameterName.POPUPMODE);
POPUPMODE包含值(在我现在的调试期间)值:EDIT
在日食中,我使用了“文件搜索”#39; - > ' POPUPMODE'确实找到了另一个我发现语句的JSP(简称简称):
String gnEditPopup = "popWindow('"+RequestUtility.getSiteURL(s1Request)+"?NEXT_PAGE="+I .... .... + IParameterName.POPUPMODE +"=" +I .... user) +"</a>)";
然后在IParameterName java类中找到了&#39; POPUPMODE&#39;确实有价值的常数&#39;编辑&#39;。
我找到了
<input type="hidden" name="<%=IParameterName.POPUPMODE%>" value="<%=mode%>">
我还没有找到明确的&page; PageContext.setAttribute&#39;。
现在我的问题是我是多么确定我找到了正确的地方“POPUPMODE&#39;属性设置和更优雅 - 更聪明的方式来获取此而不是通过文件搜索/文本搜索搜索文件?
答案 0 :(得分:1)
pageContext.findAttribute
的javadoc说:
在页面,请求,会话中搜索命名属性(如果有效), 和应用程序范围,并返回相关的值或 空。
这里的重要部分是它正在寻找属性,而不是参数。您引用作为该属性的可能来源的两个代码片段将表示为请求参数,并且这些代码片段将不会作为请求/会话/应用程序属性提供,除非您的应用程序的某些部分明确地这样做。
追踪这一点会很棘手。我要尝试的第一件事就是将pageContext.findAttribute
来电替换为request.getAttribute
和session.getAttribute
的个别来电,并查看其中哪一项会返回该值。这至少会告诉你你是在谈论请求或会话范围的属性。然后,任务变为找出应用程序的哪个部分正在获取请求参数并将其设置为属性。
您还可以尝试编写自定义servlet过滤器,该过滤器包含传入请求(使用HttpServletRequestWrapper
)并在调用setAttribute
时进行记录。这不会接到HttpSession.setAttribute
的来电,但这是一个开始。