Details
-
Type:
Bug
-
Status:
Resolved
-
Priority:
Critical
-
Resolution: Fixed
-
Affects Version/s: 2.0.1
-
Fix Version/s: 2.1.0-M2
-
Component/s: Web - General, Web - Struts
-
Labels:None
Description
Issue
If you trigger an expression lookup on an object that exists, but get it looking for a method which doesn't, you will end up with a blank screen and nothing in the logs – at best you have to figure out what you last changed in the JSP/Velocity file, at worst you have to go through it line-by-line to find the problem.
I suspect this might be specific to WebWork/Struts but it could be deeper, my stacks point to org.apache.jasper.runtime.PageContextImpl.evaluateExpression() on line 984. What strikes me as odd is that when downloading the source for Apache Tomcat v4.1, v5.5 and v6.0, none of the PageContextImpl.java files have more than 940 lines in them! I must be looking at the wrong file.
Replication
- Setup a simple Struts based AppFuse site
- Create/find an action which has an object (for me this was a List<Customer>)
- Add the following (or similar) to the result JSP: <c:out value="$
{customers.kaboom}
"/> (customers must be an object, and kaboom can't exist)
- Run the action and you should end up with a white screen and nothing in the logs
Solution
Good question ... I'm happy to help if someone can give me some pointers as I'm stuck at this point.
Ideas?
I was able to reproduce this problem, but have no idea how to fix it. Struts 2 is pretty bad at reporting error messages when you fat-finger something.
http://raibledesigns.com/rd/entry/does_struts_2_suck
Your best bet might be to stick with Struts Tags instead of JSTL.