返回到backingbean中的相同视图,我应该返回null或空字符串或视图ID吗



当我的commandButton s for signuplogin在其支持bean中调用它们的方法时,我希望在成功时重定向到index,在失败时保持相同的视图。一切都很好,我在成功时返回"index?faces-redirect=true"。如果失败,我现在意识到,我有不同的可能性:我可以返回"signup"(或"login"),""也可以工作,甚至当我返回null时,我也会得到相同的结果。至少我看不出有什么不同。

当结果应该是相同的视图时,是否有一个共同的样式返回什么?

我可以返回"signup"(或"login"),""也可以工作,即使当我返回null时,我也会得到相同的结果。至少我看不出有什么不同

实际上,null和非null的结果存在技术差异。null(或void)结果将重用相同的视图。非null结果将丢弃当前视图并创建一个全新的视图,即使它返回相同的视图标识符。";视图";这里是包括其所有状态的CCD_ 19实例。空字符串表示";当前视图ID";。

值得注意的是,@ViewScoped bean会受到此影响。它们将被丢弃,并与景观一起重建。然而,如果您使用的是@RequestScopedbean,那么您确实不会注意到bean行为的任何技术差异。当视图被破坏时,它不会被破坏,但只有当请求结束时才会被破坏。换句话说,即使在同一个请求中重新创建了相同的视图,也会在其上使用相同的@RequestScopedbean

正确的方法取决于具体的功能需求。如果要返回到同一视图,只需返回nullvoid(非空字符串)。在这种情况下,通常没有必要创建新的视图。只有当当前视图中的视图构建时间标记(JSTL和friends)的模型值在bean操作方法中发生了更改时,才需要通过返回空字符串来强制重建视图。如果您想导航到不同的视图,请返回所需的视图标识符,最好与faces-redirect=true一起返回,以确定它是否是幂等的(可添加书签)。

另请参阅:

  • 如何在JSF中导航?如何使URL反映当前页面(而不是上一页)
  • 托管bean中View和Request作用域之间的差异
  • 什么';视图构建时间是多少

相关内容

  • 没有找到相关文章

最新更新