Jsf 在页面更改中保持ManagedBean的状态

Jsf 在页面更改中保持ManagedBean的状态,jsf,jsf-2,many-to-one,view-scope,Jsf,Jsf 2,Many To One,View Scope,我有一个实体艺术家,这个艺术家应该有一个或多个音乐s 当用户点击“新艺术家”时,可以填写艺术家的所有字段(姓名、地址、风格等)。此表单与名为ArtistMB的托管bean相关联。正如我所说,Artist可以有一个或多个Musics,因此在此表单中,用户应该单击“New Music”并重定向到另一个页面New\u Music.xhtml,但用户尚未将Artist保存在数据库中,ArtistMB的所有内容现在都应该保存在内存中,因为当用户完成添加新的音乐时,这个音乐将被添加到艺术家bean中的集合,

我有一个实体
艺术家
,这个艺术家应该有一个或多个
音乐
s

当用户点击“新艺术家”时,可以填写艺术家的所有字段(姓名、地址、风格等)。此表单与名为
ArtistMB
的托管bean相关联。正如我所说,
Artist
可以有一个或多个
Music
s,因此在此表单中,用户应该单击“New Music”并重定向到另一个页面
New\u Music.xhtml
,但用户尚未将
Artist
保存在数据库中,
ArtistMB
的所有内容现在都应该保存在内存中,因为当用户完成添加新的
音乐
时,这个
音乐
将被添加到
艺术家
bean中的
集合
,然后
艺术家
bean将保存在数据库中


我怎么做?如果使用
@ViewScoped
,则当我重定向到另一个页面
new\u music时,
ArtistMB
的状态将丢失。xhtml
在导航到音乐页面之前,您可以将您的艺术家放入Flash,请参阅。

我将使用相同的窗口,可能通过打开一个模式窗口,允许添加/更新当前艺术家参考的音乐。这样,您仍然可以使用
@ViewScoped
bean,并且不需要导航到新视图。我不能使用modal。我应该把关于音乐的信息放在新的页面上,然后把艺术家的参考资料保存在某个地方,比如会话或数据库,在新页面中检索同一个艺术家并进行修改。我认为注释
@ConversationScoped
属于CDI的另一种方式,只需删除查询字符串参数就可以更容易地使其无效。