我正在尝试实现一个将书添加到购物车的函数。
Cart bean具有保存请求参数的字段。
<h:form id="addBookToCartForm">
<ui:repeat var="book" value="#{search.bookList}">
<h:commandButton value="#{messages.addToCart}"
action="#{cart.addBookToCart}">
<f:param name="bookId" value="#{book.bookId}" />
</h:commandButton>
</ui:repeat>
</h:form>
视图索引的请求。Jsf,动作方法调用视图cart.jsf.
问题是:没有调用动作方法,甚至没有构造bean本身。我看了一下类似问题的解决方案,但找不到一个指向正确方向的解决方案。起初我想#{搜索。bookList}可能是一个问题,但是我不需要下一个视图的bookList。
通过<ui:debug>
激活调试显示:
. lang。UnsupportedOperationException:不支持。javax.faces.component.UIViewAction.getActionListener (UIViewAction.java: 249)
此消息引用index.jsf顶部的元数据:
<f:metadata>
<f:viewParam name="genreTypeId" value="#{search.genreTypeId}" />
<f:viewAction action="#{search.searchByGenreTypeId}" />
</f:metadata>
搜索 bean是bookList的来源。
使用ajax更新消息。它将显示一些验证消息
事实证明,问题根本不是迭代,而是我的应用程序使用的操作方法的返回值。为了保持视图实例,方法必须返回null或void。