调试JSP页面时如何计算JSTL EL表达式?
How to evalute JSTL EL expression when debugging JSP page?
假设,我在 JSP 页面中设置了一个断点。调试器已在该行停止。如何在调试会话中评估 JSTL EL 表达式,而不是每次更改表达式时都将结果发送到浏览器?
我使用 IntelliJ IDEA。习惯性'ALT+F8'(评价window)不行
UPD:在 other 线程中提问者说 'The debugger never hits' 断点。但在我的例子中,执行停止了,但我不知道如何在不将结果发送到浏览器的情况下评估 EL 表达式。
根据我的 JSP 文件调查 Tomcat 生成的 class 的代码后,我发现了两种方法:
- 如果您只想检查 EL 表达式中使用的请求参数的值,您可以在 "Evaluate Expression" window 中键入以下内容:
((PageContext) pageContext).findAttribute("paramName")
或 javax.servlet.jsp.PageContext class 的其他 "get" 方法,而不是 findAttribute().
- 如果您想计算准确的表达式类型,请输入以下内容:
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${yourExpressionHere}", java.lang.String.class, _jspx_page_context, null, false)
但在您必须将 Tomcat 的库 jasper.jar 添加到您的项目之前。 Class org.apache.jasper.runtime.PageContextImpl 在 Tomcat 的 API 文档中有描述。
假设,我在 JSP 页面中设置了一个断点。调试器已在该行停止。如何在调试会话中评估 JSTL EL 表达式,而不是每次更改表达式时都将结果发送到浏览器? 我使用 IntelliJ IDEA。习惯性'ALT+F8'(评价window)不行
UPD:在 other 线程中提问者说 'The debugger never hits' 断点。但在我的例子中,执行停止了,但我不知道如何在不将结果发送到浏览器的情况下评估 EL 表达式。
根据我的 JSP 文件调查 Tomcat 生成的 class 的代码后,我发现了两种方法:
- 如果您只想检查 EL 表达式中使用的请求参数的值,您可以在 "Evaluate Expression" window 中键入以下内容:
((PageContext) pageContext).findAttribute("paramName")
或 javax.servlet.jsp.PageContext class 的其他 "get" 方法,而不是 findAttribute(). - 如果您想计算准确的表达式类型,请输入以下内容:
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${yourExpressionHere}", java.lang.String.class, _jspx_page_context, null, false)
但在您必须将 Tomcat 的库 jasper.jar 添加到您的项目之前。 Class org.apache.jasper.runtime.PageContextImpl 在 Tomcat 的 API 文档中有描述。