我有一个对象的 ArrayList,我按如下方式使用它们:
<ui:repeat value="#{BookReview.books}" var="book" >
<li>
<h:commandLink value="#{book.bookName}" action="detail" />
</li>
</ui:repeat>
在详细信息页面中,我显示了该书的评论,并且我有一个用于注册新评论的表单:
<h:form>
Name:<h:inputText value="#{Comment.author}" />
Rate:<h:inputText value="#{Comment.rate}" />
Text:<h:inputText value="#{Comment.comment}" />
<h:commandButton action="#{book.addComment(Comment)}" value="Add Comment" />
</h:form>
我的问题是book
直到下一个请求和 #{book.addComment(Comment)}
才会保留结果 Target Unreachable, identifier 'book' resolved to null
.
我尝试将这本书注释为 RequestScoped
,没用,那我修改为ViewScoped
,也不起作用,然后我尝试使用 <inputHidden >
保留该对象,但它只使用 .toString()
我无法重用该对象。
我不想使用 session 来存储对象,因为我只需要一次,并且我认为我不想使用转换器,因为 Book
有一个ArrayList
评论(我也认为这太麻烦和复杂)
最佳答案
将您的 BookReview
bean 放入 session
范围(或者,如果您使用的是 JSF-2.0 - 则让它具有 view
范围)。
关于java - 如何通过多个页面保存一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4069683/