« Return to Thread: How can I tell Struts 2 to throw/log exceptions for invalid OGNL Expressions

Re: How can I tell Struts 2 to throw/log exceptions for invalid OGNL Expressions

by mraible :: Rate this Message:

Reply to Author | View in Thread


Jeromy Evans - Blue Sky Minds wrote:
Jeromy Evans wrote:
> mraible wrote:
>
>>
>> I tried FreeMarker this morning and discovered that the problem
>> exists there
>> too. Grrr. I've experienced Struts 2 being eliminated as a web framework
>> candidate on a couple projects because of this. Kindof annoying.
>>  
>
> So what do you really want?  My guess here is that you invoked a
> struts tag and the tag swallowed the error and provided a default to
> the freemarker template.
>
>

On further thought I think this comes down to an interesting issue with
coupling between the view and the model.
In struts2 the model is a ValueStack that consists of both a stack and
map (context).  OGNL is used to address properties or methods in that
model and it's a trivial for OGNL to log when it fails to match a
property or method.

In the view, Struts2 provides tags for jsp, ftl or velocity that
evaluate OGNL expressions to access the model.  More often that not the
tags fail silently if the expression was invalid or failed to evaluate
anything.  Herein lies the problem.

If I were using FTL directly to access the value stack, as a developer I
could decide how to handle missing properties, blank properties or
default values with FTL's excellent error handling.  However, when I use
FTL to invoke a Struts2 tag I lose that benefit as the tag
implementations *transfer* properties into the FTL context. I think its
a flaw that Struts2 tags evaluate OGNL expressions themselves prior to
rendering the template..

A tag overhaul is well overdue (but major effort).  I've expressed other
concerns about the Struts2 tags (XWork Component and UIBean) on several
occasions already.
I realize it might be a major effort, but this seems to be a pretty big deal to me. Not for users that've already chosen Struts 2 as a web framework, but for folks evaluating Java Web Frameworks. The fact that Struts 2 is the *only* one that doesn't blow up on invalid properties makes it look pretty bad for evaluations. It's kindof like the old blank page you'd sometimes get with Tiles - you really have no idea what you did wrong and it can take quite some time to track it down if you don't know what's causing it.

Matt

 « Return to Thread: How can I tell Struts 2 to throw/log exceptions for invalid OGNL Expressions

LightInTheBox - Buy quality products at wholesale price