2012-04-28 11 views
1

問題が発生しました:IE8ではf:ajaxでイベントが機能せず、変更後に他のコンポーネントを更新しません。JSF f:ajaxとIE 8

<h:selectBooleanCheckbox id="someId" 
         value="#{someBean.showEmpty}" 
         title="#{i18n['button.showEmpty']}"> 
         <f:ajax event="change" 
          listener="#{someBean.changeShowEmpty}" 
          execute=":someForm @form" render=":messages :someForm @form" /> 
        </h:selectBooleanCheckbox> 

Chrome、Opera、Firefoxでは - 動作します。 助けてくれてありがとう。

答えて

2

これは実際にMSIEの "期待される"動作です。 MSIEは、第1クリックが本質的に変更ではないと考えているため、2回目以降の変更にのみ対応します。代わりにclickイベントでリスンする必要があります。それはまさに<f:ajax>が既にのデフォルトでは<h:selectBooleanCheckbox>の場合と同じです。ただevent属性をすべて削除してください。 UICommand成分中"action"からUIInput成分、デフォルトで"valueChange"

<f:ajax listener="#{someBean.changeShowEmpty}" 
    execute=":someForm @form" render=":messages :someForm @form" /> 

<f:ajax event>デフォルト。ラジオボタンまたはチェックボックスを生成するUIInputコンポーネントでは、onclickが生成されます。他のUIInputコンポーネント(テキストフィールド、テキストエリア、ドロップダウンなど)ではonchangeが生成されます。具体的な問題への無関係


、他の<h:form>その値が現在の提出と一緒に提出されていないという理由だけで、あなたはexecute属性に考えているようだものに反してで処理されないでき形。しかしそれは別の話です。