我有以下問題:我需要從「列表頁面」重定向到詳細信息頁面,但我需要列表中的編號。本例中的「記錄」是rich:dataTable的var屬性。首先,我想這個問題:如何正確參數化a4j:commandLink?
<a4j:commandLink id="detailsLink" value="show details" execute="@this" action="/customerDetails?faces-redirect=true&cusid=#{record.id}" />
但這是無效的語法,所以我想是這樣的:
<a4j:commandLink id="detailsLink" value="show details" execute="@this" action="/customerDetails?faces-redirect=true">
<f:attribute name="cusid" value="#{record.id}"/>
</a4j:commandLink>
(我甚至嘗試F:PARAM) 在我試過的目標頁面接收值與...
<f:metadata>
<f:viewParam required="false" name="cusid" value="#{customerBean.editCustomer}"/>
</f:metadata>
基本上F:元數據的作品,因爲當我用下面的硬編碼參數試試吧,我接受它的價值:
<a4j:commandLink id="detailsLink" value="show details" execute="@this" action="/customerDetails?faces-redirect=true&cusid=120" />
我找到了解決辦法,但我不知道這是正確的方式:
在customerBean我做如下:
public String editCustomer(long customerId)
{
edit(customerId);
return "/customerDetails?faces-redirect=true";
}
但我不認爲這是使用Rich Faces發送和接收參數的常用方法。有沒有更好的解決方案?
基本上這似乎工作,即使有一個EL表達式作爲參數,但有一些奇怪的行爲。在customersDetail上,我嘗試使用f:metadata屬性獲取param,如上所述。當點擊該鏈接時,第一次重定向到詳細信息頁面時,將不會執行元數據屬性方法。當我切換回列表頁面並再次嘗試時,它突然生效。我不知道那有什麼問題。 – Bevor 2012-03-06 13:59:28
聽起來像一個緩存問題。清理瀏覽器緩存並重啓服務器。 – BalusC 2012-03-06 14:05:02
我認爲這與另一個問題有關。但無論如何,這不在我的問題範圍之內。 – Bevor 2012-03-06 14:31:09