IEのフォームの挙動
勉強のためMayaa 1.1.2 + S2Struts 1.3.0-beta-3-SNAPSHOTでWebアプリケーションを構築しています。
そこで、はまったことがありました。
IEではフォームにテキストボックスがありフォーカスがある状態でEnterキーを押下するとsubmitが発生します。
このときテキストボックスが1つしかないフォームの場合、次の例外が発生しました。
org.seasar.struts.pojo.exception.NotCalledActionRuntimeException: Action can not be called.
org.seasar.struts.pojo.impl.PojoInvocationImpl.execute(PojoInvocationImpl.java:117)
org.seasar.struts.pojo.commands.DispatchCommand.execute(DispatchCommand.java:41)
org.seasar.struts.pojo.impl.PojoInvocationImpl.execute(PojoInvocationImpl.java:115)
org.seasar.struts.pojo.commands.SingleMethodCommand.execute(SingleMethodCommand.java:39)
org.seasar.struts.pojo.impl.PojoInvocationImpl.execute(PojoInvocationImpl.java:115)
org.seasar.struts.pojo.commands.PropertyBindingCommand.execute(PropertyBindingCommand.java:40)
org.seasar.struts.pojo.impl.PojoInvocationImpl.execute(PojoInvocationImpl.java:115)
org.seasar.struts.pojo.PojoProcessAction.execute(PojoProcessAction.java:65)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:413)
IE6のフォームの挙動によるとIEの仕様が原因のようです。
IEはテキストボックスの数によって次のように挙動が変わってしまうようだ。
・テキストボックスが1つだけの場合、ボタンはサーバへsubmitされない
・テキストボックスが複数ある場合、最初のボタンがサーバへsubmitされる
(Firefoxだとテキストボックスの数に依らず最初のボタンがsubmitされる。)
回避策は、IE6のフォームの挙動にあるように
「見えないテキストボックス」を作成しました。
<input type="text" name="dummy" style="display:none;">
てっきりS2Strutsの不具合かと思いました。ごめんなさいm(__)m
閑話休題
Seasar2やS2Daoを触ったときにも感じたけどMayaaもS2Strutsも使いやすい。
と思う仕事では素Struts+dbutilsだけで開発している今日この頃…。