我碰到了牆。 我知道a4j和豐富的標籤非常好(我使用Seam 2.2.0和Richfaces 3.3.1)。但是,我試圖做一些非常簡單的事情,但在豐富的:modalPanel中。a4j:內部支持:modalPanel
似乎rich:modalPanels不允許觸發Ajax事件。這裏有一個簡單的故障: 我有一個h:selectOneMenu,其中有一些項目,其值被附加到一個支持bean。附加到h:selectOneMenu是一個a4j:支持標籤,因此無論何時觸發change事件,輔助bean都應該被更新。真的很簡單的東西呃?
但是,當這個h:selectOneMenu在rich:modalPanel中時,onchange事件不會更新輔助bean,直到rich:modalPanel關閉。
我可以證實這一點,因爲我在Eclipse調試模式下運行它,並且在h:selectOneMenu上連接的屬性的setter上有一個斷點。 這讓我生氣!這是Ajax的香草,但富有:modalPanels似乎不允許它。
所以,問題是:我可以在一個豐富的:modalPanel內做Ajax的東西嗎?我基本上試圖使用rich:modalPanel作爲窗體(我試過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>
問候, 安迪
是什麼動作由a4j調用:支持onchange事件?如果是,那麼你有沒有確認該行動被稱爲? – niksvp 2011-01-11 09:52:50
不是。這是一個簡單的a4j:support event ='onchange'綁定,確保當下拉改變時,綁定的支持bean值將得到更新。它確實得到更新,但只有在模式面板關閉後。如果它不在模式面板中,則每次更改下拉值時都會更新bean。 – 2011-01-11 10:01:47