我建立的發票應用。當用戶選擇客戶端時,與客戶端關聯的服務將通過ajax事件在dataTable中重新呈現。但是,dataTable中selectOneMenu的ajax事件不會觸發。AJAX事件是由另一AJAX事件重新呈現不執行
這是讓用戶選擇的客戶機的形式:
<h:form>
<h:selectOneMenu id="clientSelect" value="#{invoiceBean.client}">
<f:ajax execute="clientSelect" listener="#{invoiceServiceListener.processClientValueChange}" render=":test :invoiceData"/>
<f:selectItems value="#{invoiceBean.clientOptions}"/>
</h:selectOneMenu>
</h:form>
這將觸發其填充在invoiceBean服務陣列和重新呈現顯示所述服務在另一個selectOneMenu用於數據表的AJAX事件在dataTable中。這部分工作正常。
這是通過上述形式選擇所述客戶端之後被重新呈現的數據表:本selectOneMenu用於被適當地填充
<h:panelGroup id="test">
<h:dataTable id="invoiceData" value="#{attributes.priceAttributes}" var="loop">
<h:column>
<ui:param name="service" value="service#{loop}" />
<ui:param name="description" value="description#{loop}" />
<ui:param name="price" value="price#{loop}" />
<h:form id="invoiceSelectMenu">
<h:selectOneMenu id="selectMenu" value="#{invoiceBean[service]}">
<f:ajax event="change" execute="selectMenu" listener="#{invoiceServiceListener.procesServiceValueChange}" render="@form" />
<f:attribute name="row" value="#{loop}" />
<f:selectItems value="#{invoiceBean.services}" />
</h:selectOneMenu>
<h:inputText id="description" value="#{invoiceBean[description]}" />
<h:inputText id="price" value="#{invoiceBean[price]}" />
<h:outputText value="#{loop}" />
</h:form>
</h:column>
</h:dataTable>
</h:panelGroup>
。但是,在選擇一個菜單中的ajax事件在通過第一種形式重新呈現後不起作用。但是,如果我手動填充服務數組而未提交第一個表單,那麼這個ajax事件正常執行。順便說一下,這個ajax事件也爲描述和價格輸入字段設置了一個值,這些字段在事件發生時應該重新呈現。 invoiceBean是請求作用域。
你爲什麼不閱讀該郵件通過'['和']'格式化替換所有'<' and '>之前編輯的幫規'? – BalusC 2012-02-03 19:50:12
如果您有DOM元素的事件處理程序並將其替換爲AJAX內容,則不再附加事件。這是問題嗎? – 2012-02-06 17:26:02
對不起,我不熟悉這個DOM術語。你能詳細說明一下嗎?我如何解決這個問題?如果您有關於此事的鏈接,請分享。我很好的自己閱讀,當我在谷歌搜索時,我無法找到一個有用的鏈接。謝謝。 – 2012-02-06 17:35:26