Joe,
${error} being null would imply that you have an item in the action
errors Collection that is null. (e.g. {"Error1", "Error2", null,
"Error4}) It seems like that would be an issue that occurs as the
errors are being populated. (I can't think of a valid use case where
you would have a null error message.)
In spite of that, you could modify the template to handle this more
gracefully using the default function:
<li><span class="errorMessage">${error?default("")}</span></li>
In general, I think there is room for improvement in the UI tags error
handling/reporting. I've already submitted patches for null handling in
the select tags--this is just another instance were nulls slip through
the cracks.
Tom
Joe Germuska wrote:
I've ran into an odd problem of my own and while I'm troubleshooting
it, I'm
hitting some problems or confusion with Freemarker as it is used for
the S2
UI tags. Can anyone help me understand this better?
I was getting a big yellow and red Freemarker trace in my rendered page
because an ${error} expression yielded null when using <s:actionerror>.
I'm assuming this is the result of an uncaught NullPointerException being
caught by Struts2, as the message for NPEs is often itself null. I
actually
haven't yet figured out where this logic is, so question 1 is "which
class
is actually catching my exception and routing to an 'error' page?"
Then, it seems like our templates should be prepared for the
possibility of
a null message, especially if they are being invoked when an
unexpected NPE
is caught -- a not unlikely scenario.
So I found this page of Freemarker documentation explaining how to
deal with
empty values:
http://freemarker.sourceforge.net/docs/dgui_template_exp.html#dgui_template_exp_missing
except that it doesn't seem to apply to the version of Freemarker (2.3.4)
that we're using. They're only up to 2.3.8 and they make a big fuss
about
nulls -- can this be new just in those minor releases? Or is there
something I should understand about why those rules don't apply to
Freemarker as it is used in S2? I get an error when I try to use the
syntax
for handling missing values
${error!"null"}
and the syntax for testing for nulls
${error??}
What am I missing?
After I get all that cleared up, the last question is whether or not we
ought to make a change to template/simple/actionerror.ftl so that it
handles
this gracefully. I guess I already think the answer is "yes", and I'd
do it
myself, except apparently I haven't found Freemarker syntax documentation
which is right for our environment.
Thanks
Joe
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]