2011-05-12 57 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