If you enter an invalid or malformed taxon ID, say "T1000", in the taxon search page, you should get the message "'Ignoring malformed taxon ID string 'T1000'; try 'Tx####' or just a number'". But the message is missing. The searchMessage variable is lost from the request somewhere late in the rendering process.
Hypothesis: redirectView destroys such attributes, because it (at least notionally) creates a new request. Expose them in the model instead?
It's not caused by an unexpected call to SearchController.clearMessage. I changed clearMessage() to append the message "*MESSAGES CLEARED*" but still nothing.