我正在用PrimeFaces 5編寫一個應用程序,目前我正在寫一個帶有幾個AutoComplete元素的屏幕,其中一個自動完成的值會影響第二個自動完成中可用的選擇。PrimeFaces p:ajax無法解析bean
我試圖讓這個工作的方式是,當第一個自動完成填充時,會觸發一個Ajax事件來更新具有該值的支持bean,以便當第二個自動完成被調用時,它具有從第一次自動完成準備打開的值。
這是網頁:
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://xmlns.jcp.org/jsf/passthrough"
xmlns:pf="http://primefaces.org/ui">
<pf:panel id="header" header="Details" style="margin-bottom:20px">
<h:panelGrid columns="3" style="margin-bottom:10px;border-style:solid;border-width:0.1em;width:100%" cellpadding="5">
<pf:outputLabel id="input1Label" for="input1" value="Specify Input 1" />
<pf:autoComplete id="input1" value="#{bean.input1}" completeMethod="#{bean.completeInput1}"
var="input1" itemLabel="#{input1}" itemValue="#{input1}" >
<pf:ajax event="itemSelect" listener="#{bean.input1ItemSelect}"/>
</pf:autoComplete>
<pf:message id="input1Msg" for="input1"/>
<pf:outputLabel id="input2Label" for="input2" value="Input 2?" />
<pf:autoComplete id="input2" value="#{bean.input2}" completeMethod="#{bean.completeInput2}"
var="input2" itemLabel="#{input2}" itemValue="#{input2}" />
<pf:message id="input2Msg" for="input2"/>
</h:panelGrid>
</pf:panel>
</ui:composition>
然而,當在輸入1選擇一個值,我得到這個錯誤:
不可達,標識「豆」解析爲空:javax.el.PropertyNotFoundException: Target Unreachable,標識符'bean'解析爲空
現在接下來要指出的是,此構圖包含在父組合中,「bean」作爲參數以下列方式傳入:
<c:forEach items="#{parentBean.blockNames}" var="blockName" varStatus="loop">
<f:subview id="block_subview_#{loop.index}">
<ui:include src="#{blockName}">
<ui:param name="bean" value="#{parentBean.blockBeans[loop.index]}"/>
</ui:include>
</f:subview>
</c:forEach>
我已經能夠建立的是,如果我將pf:ajax標記中的引用「bean」更改爲已命名的bean,它能夠解析bean引用並嘗試調用偵聽器方法。所以看起來出於某種原因,pf:ajax標記無法應對「bean」引用,因爲它不是實際bean的名稱,而是從父級傳入的bean參數的名稱。然而所有其他標籤完全能夠在這裏解析「bean」。
有沒有辦法解決這個問題?
編輯:
改變PF:AJAX到F:阿賈克斯似乎使錯誤消失,至少正確的監聽方法,然後調用。我寧願不使用這種方法,但也許這個信息是有用的。
不幸的是,當我使用** **時,在父頁面中動態包含子視圖的設計無法正常工作,從我讀過的** **中獲取此行爲是必要的,例如答案在這個線程:http://stackoverflow.com/questions/20111010/jsf-dynamically-include-src-in-uiinclude-src-bean-pagepath –
也許你可以找到一些有用的[這個答案](http:// stackoverflow.com/a/24491365/2195551)。 – RafaelTSCS
這是我的答案:-)雖然正如我所提到的方法拒絕爲我需要的設計工作,所以我不得不後來恢復到c:forEach根據我鏈接到的線程。 –