一尘不染

在JSP页面中进行调试?

jsp

我正在使用Java 1.6,Spring 3.4,Spring Webflow 2.3.2和Tomcat7。我正在尝试调试使用EL表达式的JSP页面,例如:

<c:if test="${myObject.myThing == SomeClass.ENUMVALUE.myvalue}"  >

myObject对象作为Webflow模型对象传递。我在此行上设置了一个断点,可以到达它并中断它,但是我尝试“观察”或“评估”的任何操作都会给我一条错误消息。我要么

${myObject.myThing == SomeClass.ENUMVALUE.myvalue}:  Invalid Expression

myObject.myThing:  Type is unknown for 'myObject'

(MyCorrectType) myObject:  Cannot find local variable 'myObject'

我怎么能找到这个模型对象?到达JSP页面时包含的内容是什么?


阅读 357

收藏
2020-06-10

共1个答案

一尘不染

答案是,它将存在于org.apache.catalina.connector.Request对象中(在我的特殊情况下,它被埋在包装对象内部的几层深处。)

如果您正在使用调试器(例如Intellij中的调试器)(我使用的是调试器),则可以通过对表达式求值来获取单个属性的值(例如Webflow模型对象)request.getAttribute("attributeName")。请注意,这可能会返回Java
Object类型,并且您可能必须将其强制转换为正确的类型。

例如,在我的情况下,我可以使用以下表达式找到所需的值:

((MyObject)(request.getAttribute("myObject"))).getMyThing()

希望对您有所帮助。

2020-06-10