做一个 CRUD,我有一个 RequestScoped Ticket bean。
我有一个 XHTML 页面,直到现在我一直在使用它来创建新票证;工单字段直接填充(#{ticket.description}
依此类推)
现在我有一个列出票的搜索表单,每张票都有一个以票号作为参数的链接。我希望支持 bean 从 EJB/JPA 中检索票证 bean(已经完成)并将其放入请求中。我看到了 3 种方法:
- 将从 JPA 检索到的 bean 中的数据复制到注入提供的 bean 中。丑陋/容易遗漏。
- 使用ExternalContex#getRequestMap并自己将 bean 放在那里。看起来不太妥当。我对吗?
- 将我的票 bean 包含到另一个 bean 类中,这样我就可以做到
myNewBean.setTicket(ticketFromJpa);
。似乎是最好的选择,但我不喜欢为此在页面中添加所有 EL 前缀。
有没有更清洁、更正确的方法来做我想做的事?
提前致谢。
更新:改写我想要的内容,提供更多信息。我在 page 中有一个 commandLink ,它在 backing beanP1
中调用 action 。执行其逻辑并重定向到 page 。我想在 action中设置一个(请求范围的)bean ,并且可以用来绘制。A
B1
B1
P2
B2
A
B2
P2
从实验中,我发现在离开操作后A
,框架会创建一个新的B2
请求范围 bean,所以看起来请求范围比我预期的要短。
Damian 提出的 flash 范围看起来更像我想要的,但迫使我重新设计 #{flash} 周围的页面,并且(当我想使用它来创建新 bean 时)我还必须将 bean 添加到在一个动作方法中闪现(目前它只是转到页面并且托管 bean 可用)
我希望从那时起维护一个请求范围的 bean