我正在尝试实现一个将书籍添加到购物车的功能。
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>
来自视图index.jsf的请求,action方法调用视图cart.jsf。
问题是:没有调用action方法,甚至没有构造bean本身。 我看过类似问题的解决方案,但找不到指向正确方向的解决方案。起初我以为#{search.bookList}可能是一个问题,但我不需要bookList用于下一个视图。
通过<ui:debug>
激活调试显示:
java.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>
search bean是bookList的来源。
答案 0 :(得分:0)
使用ajax更新更新消息。它将显示一些验证消息。
答案 1 :(得分:0)
事实证明,问题不是迭代,而是我的应用程序正在使用的操作方法的返回值。 为了保持视图实例,方法必须返回null或void。