YmirにはStrutsと同様のトランザクショントークン機能があります。トランザクショントークン機能はバリデーションの一種として実現されています。
正当なトランザクショントークンを持たないsubmitを受け付けないようにするためには、formタグにトランザクショントークンを埋め込んでおく必要があります。
トランザクショントークンを埋め込むには以下のようにします。
<form ...> <input tal:attributes="name token/name; value token/value" type="hidden" /> ... </form>
このformからのsubmitを受け付ける側のアクションには、org.seasar.ymir.token.constraint.annotation.TokenRequiredアノテーションを付与しておきます。
@TokenRequired public void _post() { }
リクエストパラメータとして渡されたトークンが正当でない場合は、通常のバリデーション失敗の場合と同様の処理が行なわれます。
なおリクエストパラメータとして渡されたトークンが正当であってもなくても、セッションからトークンが削除されます。