S2StrutsのPOJO Form利用時の仕様について

 S2StrutsPOJO Formを利用した場合に、画面遷移のパターンによってHttpRequestに格納されるオブジェクトの型が異なるようです。

  • entry.jspフォワード→EntryInitActionでEntryFormに値を格納
    • この場合、HttpRequestにはPOJO Formそのものが格納される。
  • entry.jspからPOST→EntryActionでEntryFormに値を格納→entry.jspフォワード→EntryInitActionでEntryFormに値を格納
    • この場合、HttpRequestにはBeanValidatorFormに変換されたEntryFormが格納される。

 この仕様に違いにより、JSTLタグでFormを扱おうとするとentryFormそのものを扱うか、entryForm.instance(BeanValidatorFormからPOJO Formを取得)を扱うかを遷移パターンによって切り替える必要が出てきてしまいます。
 仕様が異なる理由は、データがPOSTされた場合はProcessPojoFormInterceptorにより、POJO FormがBeanValidatorFormに変換されますが、直接jspにフォーワードされた場合はPOJO Formそのものが扱われるためと思われます。

 この仕様を統一する対応としては、現在BindingUtilのexportPropertyメソッドでHttpRequestに格納されるオブジェクトがBeanValidatorFormだった場合には、BeanValidatorFormを格納していますが、下記のようにPOJO Formそのものを返すことで対応可能なようです。現在、BeanValidatorFormを格納している理由は何でしょうか?

BindingUtil.javaファイルの変更

if (BeanValidatorFormUtil.isBeanValidatorForm(container.getRequest(), propertyName)) {
    BeanValidatorForm beanValidatorForm =
      (BeanValidatorForm) BeanValidatorFormUtil.toBeanValidatorForm(
          container.getRequest(), propertyName, value);
    value = beanValidatorForm.getInstance();
}