2011-04-27 28 views
1

是否可以使用下拉菜單或者是否也可以使用實現ActionSource的父對象作爲f:setPropertyActionLister?JSF2:有沒有辦法使用豐富的a4j:param:select或h:selectOneMenu

理想我會做類似如下:

<h:selectOneMenu value="#{myCustomBean.selectedItemIndex}"> 
    <f:selectItems value="#{adminLetterAdminBean.missingSettings}" var="n" itemValue="#{n.id}" itemLabel="#{n.name}"/> 
    <f:setPropertyActionListener value="42" target="#{adminLetterAdminBean.someProperty}" /> 
    <a4j:ajax /> 
</rich:select> 

然而,這並不工作,因爲H:selectOneMenu用於未實現javax.faces.component.ActionSource。該頁面不呈現,它給了我一個友好的堆棧跟蹤來告訴我這種依賴關係。

沒有看到關於這個約束RichFaces的文檔中的任何東西,我試過如下:

<h:selectOneMenu value="#{myCustomBean.selectedItemIndex}"> 
    <f:selectItems value="#{adminLetterAdminBean.missingSettings}" var="n" itemValue="#{n.id}" itemLabel="#{n.name}"/> 
    <a4j:param assignTo="#{adminLetterAdminBean.someProperty}" value="42" name="randomRequestParamName"/> 
    <a4j:ajax /> 
</rich:select> 

這不炸燬,但它也確實設置該屬性。我想知道是否有類似的方式設置一個(或多個)屬性。

回答

1

a4j:param只能嵌套在動作組件中,比如a4j:commandButon,a4j:commandLink和a4j:jsFunction。您也可以將它與標準按鈕/鏈接組件一起使用。

+0

感謝您的回覆。你知道任何涉及這個限制的文件嗎? – jnt30 2011-04-27 23:07:47

+0

不,但我問過來自RichFaces團隊的人;) – 2011-04-28 00:16:22

+0

這對我來說已經足夠了。感謝您的信息。我個人的建議是以類似f:setPropertyActionListener的方式炸燬它,因爲它實際上沒有辦法工作,但是我離題了。再次感謝,你得到的要點! – jnt30 2011-04-28 00:56:51

0

我有一個類似的問題。自動填充請求完成之前,我的頁面必須傳輸有關自動填充的信息。我通過使用jsFunction實現了這一點。我的自動填充的樣子:

<rich:autocomplete mode="ajax" showButton="true" value="#{conf.fieldValue}" 
     autocompleteMethod="#{BackingBean.search.autocomplete}" 
     minChars="3" onfocus="sendInfo('#{conf.label}')"> 
</rich:autocomplete> 

根據conf.label(CONF是一個foreach變量)不同的數據是通過在自動完成方法支持bean取出。

這種信息的傳遞是通過jsFunction(剛過自動完成申報)來完成:

<a4j:jsFunction name="sendInfo"> 
    <a4j:param name="param1" assignTo="#{BackingBean.search.currentAutocomplete}"/> 
</a4j:jsFunction> 

只是,當用戶將專注於一個特定的自動完成「sendInfo」與一個參數,即執行綁定到支持bean。