2011-05-12 59 views
0
<h:commandButton value="Add Order" action="#{orderBasket.addItems(param['orderItemId'])}"/> 

我無法獲得上述工作...當您單擊該按鈕時,參數似乎設置爲空。有沒有解決的辦法?JSF2 CommandButton動作請求參數

是否有另一種方法將URL參數傳遞給動作方法?我使用的是Spring EL解析器,它限制了我將參數傳入bean的能力,因爲我不使用faces-config。

回答

2

首先,我認爲你可以更好地使用JSF,很多問題會簡單得多。看起來您正在將JSF用作請求/響應框架,如Struts。 JSF是一個面向對象的組件框架,您應該以這種方式使用它來獲得最佳效果。

我會盡力解決你的問題,但我錯過了你正在做的一些信息。

如果你的書,你可以訂購一個列表,讓我們說(你可以使用的用戶界面:重複代替):它們顯示在一個DataTable

<h:dataTable value="#{bookController.books}" var="book"> 

    <h:column> 
     <h:outputText value="#{book.title}" /> 
    </h:column> 

    <h:column> 
     <h:commandButton value="Add Order" action="#{orderBasket.addItems(book)}" /> 
    </h:column> 

</h:dataTable> 

在orderBasket支持豆,你隨便拿書(或其他)作爲參數。你不需要處理請求/響應週期,當然不是你的觀點。

如果您需要立即在購物車中顯示,您可以使用f:ajax標籤。

讓我知道如果你需要更多的解釋(支持豆源或其他)。

+1

謝謝,但我更喜歡通過URL控制狀態,以允許使用瀏覽器後退按鈕進行書籤和導航。有關上述問題的任何想法?乾杯。 – 2011-05-12 09:54:13

+1

也許嘗試一個沒有Spring的簡單示例應用程序,看看它是否是罪魁禍首。也許使用f:viewParam在頁面加載時獲得一個真實的對象。或PrettyFaces。 – ymajoros 2011-05-12 12:10:30