I was having some issues with how freemarker/struts handles the 'value' attribute on the 'param' tag. I figured it out and saw that struts will try to evaluate any string passed in to 'value'. Freemarker had been evaluating my expressions, sending in the resulting string to struts, and struts was evaluating it again.
After figuring that out, I assumed that other tags, like 'hidden' would behave the same way with their 'value' attribute, but that doesn't appear to be the case. It seems like I need to do the following for the 'param' tag: <@s.param name="foo" value="someProperty"/> But with the hidden tag (or I'm assuming any form-based tag) I have to do: <@s.hidden name="foo" value=someProperty/> or: <@s.hidden name="foo" value="${someProperty}"/> Is this the expected behavior? And if so, why the different handling of the value attribute between the different tags? This page: https://struts.apache.org/docs/tag-syntax.html#TagSyntax-valueisanObject%21 seems to indicate that all value attributes are evaluated and even gives the example of a textfield. But the behavior I'm seeing with hidden is that if you used value="someProperty", you'd get the literal string value: "someProperty" in the html, not the result of evaluating "someProperty" against the value stack. Also, the table of parameters for all of the following tags: https://struts.apache.org/docs/hidden.html https://struts.apache.org/docs/textarea.html https://struts.apache.org/docs/textfield.html https://struts.apache.org/docs/param.html Indicate that 'value' is a String field, even on the param page where the 'Description' section indicates exactly the opposite. Is there a place I could see definitively which attributes are evaluated against the value stack and which are taken as-is? Or am I just missing/not-understanding something (very likely)? -Steven Willis