java - 如何通过多个页面保存一个对象

标签 java jsf facelets

我有一个对象的 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/

相关文章:

java - 我是否以正确的方式使用可调用和 future 多线程(java)?

java - 对加载最多约 30,000 条记录的相关下拉列表的性能影响

java - openstack4j 中的 RestEasyProviderFactory ClassCastException

java - 为什么我的 bean 验证消息没有被接收到?

java - jsf - 在 faces-config 中注册 SessionListener

database - 使用不同操作系统将项目从开发部署到生产的良好做法?

java - 自动将焦点转移到下一个编辑文本

jsf - p :dataTable multiple selection not working

Eclipse JSF + facelet - 打开和编辑页面很慢

java - JSF2.0 buildView() 和 f :ajax performance