在jsf应用程序中,我有一个包含汇总数据的表。如果我对细节感兴趣,可以点击一行,查看另一页的详细信息。 如果'master'页面的托管bean是离子视图范围,那么每次从'detail'页面返回时都会重新创建它,如果用户应该查看详细信息,我认为这不是一个好主意。更多次。我可以解决将bean放在会话中的问题,但这样,当用户在完全不同的部分与应用程序交互时,bean(和数据)也会保存在内存中。可能我需要一个自定义范围,但是:
由于 菲利普
答案 0 :(得分:2)
如果详细信息页面必须是幂等的(即它是永久链接的,可收藏的,searchbot-crawlable的),只需使用两个请求或视图范围的bean并使用带有实体ID作为请求参数的GET链接从主页面转到详细信息页。另请参阅Creating master-detail pages for entities, how to link them and which bean scope to choose以获取具体示例。
如果细节页面不需要是幂等的,那么您始终可以在同一视图中有条件地渲染主图和细节,甚至可以在母版页的某个模态对话框中显示细节。这样,您可以继续使用单个视图范围的bean。
在JSF方面,您不必过于担心数据库性能成本。而是在持久层中配置和微调它。例如,在JPA中,您可以设置二级缓存。如果你的项目超过500~1000,那么请考虑数据库级别的分页。
答案 1 :(得分:1)
每次重新加载母版页可能是有效的,例如如果在查看详细信息页面后数据可能已更改。但是,如果您希望将数据保留的时间超过@ViewScoped,则选项为:
我倾向于查看对话范围。您没有提到您正在运行的JSF实现或在哪个环境中。