This is not struts, OGNL issue. OGNL doesn't evaluate expression twice, without special syntax that include subexpressions. However the "+" sign is an operator that evaluate the expression if you enter it without quotas.
Surround with quotas the value like this to prevent evaluation.
<s:set var="title" value="'Weather+ Free'"/>
or use the value in the body like this
<s:set var="title">Weather+ Free</s:set>
to check it
<s:property value="#title"/>
Also if the value is in the action property or any other scope the double evaluation should never occur.