以下の条件判定は正しく解釈されません
<s:if test="%{#session.flag == 'Y'}">
文字列の場合は、通常ダブルクォーテーションが必要ですが、
2文字以上あれば、シングルクォーテーションでも、適当に解釈して文字列にしてくれます。
ただし、1文字の場合は明確にダブルクォーテーションで囲まないと、charになってしまうので、
注意してください。
例:シングルクォーテーション(2文字以上の場合)
<s:if test="%{#session.name == 'mofu'}">
例:ダブルクォーテーション(1文字以上の場合)
<s:if test='%{#session.flag == "Y"}'>
もしくは
<s:if test="%{#session.flag == \"Y\"}">