壁にぶち当たりました。私は a4j とリッチタグについてよく知っています (私は Seam 2.2.0 と Richfaces 3.3.1 を使用しています)。ただし、非常に単純なことをしようとしていますが、rich:modalPanel で行います。
rich:modalPanels では Ajax イベントの発生が許可されていないようです。簡単な内訳は次のとおりです。いくつかのアイテムを含む ah:selectOneMenu があり、その値はバッキング Bean にアタッチされています。その h:selectOneMenu には a4j:support タグが添付されているため、変更イベントが発生するたびにバッキング Bean が更新されます。本当に単純なことですよね?
ただし、この h:selectOneMenu が rich:modalPanel にある場合、onchange イベントは、rich:modalPanel が閉じるまでバッキング Bean を更新しません。
Eclipse デバッグ モードで実行していて、h:selectOneMenu に接続されているプロパティのセッターにブレークポイントがあるため、これを確認できます。これは私を怒らせています!これは Ajax の標準的なものですが、rich:modalPanels では許可されていないようです。
質問は、rich:modalPanel 内で Ajax を実行できるかどうかです。私は基本的にリッチ:モーダルパネルをフォームとして使用しようとしています (私は a4j:form と h:form を無駄に試しました)。フォームの一部が再レンダリングされる必要があります)。私は不可能なことをしようとしていますか?
modalPanel の簡易バージョンを次に示します。
<rich:modalPanel id="quickAddPanel">
<div>
<a4j:form id="quickAddPaymentForm" ajaxSubmit="true">
<s:decorate id="paymentTypeDecorator">
<a4j:region>
<h:selectOneMenu
id="paymentType"
required="true"
value="#{backingBean.paymentType}"
tabindex="1">
<s:selectItems
label="#{type.description}"
noSelectionLabel="Please select..."
value="#{incomingPaymentTypes}"
var="type"/>
<s:convertEnum/>
<a4j:support
ajaxSingle="true"
event="onchange"
eventsQueue="paymentQueue"
immediate="true"
limitToList="true"
reRender="paymentTypeDecorator, paymentDetailsOutputPanel, quickAddPaymentForm"/>
</h:selectOneMenu>
</a4j:region>
</s:decorate>
</fieldset>
<fieldset class="standard-form">
<div class="form-title">Payment details</div>
<a4j:outputPanel id="paymentDetailsOutputPanel">
<h:outputText value="This should change whenever dropdown changes: #{backingBean.paymentType}"/>
</a4j:outputPanel>
</fieldset>
</a4j:form>
</div>
</rich:modalPanel>
よろしく、アンディ