返回到支持 bean 中的相同视图,我应该 return null 还是空字符串或视图 ID?
Returning to same view in backing bean, should I return null or empty string or view ID?
当我的 commandButton
s for signup
和 login
在他们的支持 bean 中调用他们的方法时,我想在成功时重定向到 index
,并保持不变失败时查看。一切正常,我 return "index?faces-redirect=true"
就成功了。我现在意识到失败的情况,我有不同的可能性:我可以 return "signup"
(或 "login"
),""
也可以,甚至当我 return null
我得到了相同的结果。至少我无法检测到任何差异。
有什么共同的样式return,当结果应该是相同的视图时?
I could return "signup"
(or "login"
), also ""
works, and even when I return null
I get the same result. At least I can not detect any differences.
null
和非 null
结果实际上存在技术差异。 null
(或void
)结果将重用相同的视图。非 null
结果将丢弃当前视图并创建一个全新的视图,即使它 return 具有相同的视图标识符。 “视图”在这里是 UIViewRoot
实例,包括它的所有状态。空字符串表示“当前视图 ID”。
值得注意的是 @ViewScoped
bean 受此影响。它们将与视图一起被丢弃并重新创建。但是,如果您使用的是 @RequestScoped
bean,那么您确实不会注意到 bean 行为的任何技术差异。当视图被丢弃时它不会被丢弃,但只有在请求结束时才会被丢弃。换句话说,即使在同一个请求中重新创建同一个视图,也会使用同一个 @RequestScoped
bean。
正确的方法取决于具体的功能需求。如果你想 return 到相同的视图,只需 return null
或 void
(不是空字符串)。在这种情况下通常不需要创建新视图。仅当您在当前视图中具有视图构建时间标签(JSTL 和朋友),其模型值已在 bean 操作方法中更改时,您才需要通过 returning 一个空的来强制重建视图细绳。如果您想导航到不同的视图,return 所需的视图标识符,最好与 faces-redirect=true
一起确定它是否是幂等的(可添加书签)。
另请参阅:
- How to navigate in JSF? How to make URL reflect current page (and not previous one)
- Difference between View and Request scope in managed beans
当我的 commandButton
s for signup
和 login
在他们的支持 bean 中调用他们的方法时,我想在成功时重定向到 index
,并保持不变失败时查看。一切正常,我 return "index?faces-redirect=true"
就成功了。我现在意识到失败的情况,我有不同的可能性:我可以 return "signup"
(或 "login"
),""
也可以,甚至当我 return null
我得到了相同的结果。至少我无法检测到任何差异。
有什么共同的样式return,当结果应该是相同的视图时?
I could return
"signup"
(or"login"
), also""
works, and even when I returnnull
I get the same result. At least I can not detect any differences.
null
和非 null
结果实际上存在技术差异。 null
(或void
)结果将重用相同的视图。非 null
结果将丢弃当前视图并创建一个全新的视图,即使它 return 具有相同的视图标识符。 “视图”在这里是 UIViewRoot
实例,包括它的所有状态。空字符串表示“当前视图 ID”。
值得注意的是 @ViewScoped
bean 受此影响。它们将与视图一起被丢弃并重新创建。但是,如果您使用的是 @RequestScoped
bean,那么您确实不会注意到 bean 行为的任何技术差异。当视图被丢弃时它不会被丢弃,但只有在请求结束时才会被丢弃。换句话说,即使在同一个请求中重新创建同一个视图,也会使用同一个 @RequestScoped
bean。
正确的方法取决于具体的功能需求。如果你想 return 到相同的视图,只需 return null
或 void
(不是空字符串)。在这种情况下通常不需要创建新视图。仅当您在当前视图中具有视图构建时间标签(JSTL 和朋友),其模型值已在 bean 操作方法中更改时,您才需要通过 returning 一个空的来强制重建视图细绳。如果您想导航到不同的视图,return 所需的视图标识符,最好与 faces-redirect=true
一起确定它是否是幂等的(可添加书签)。
另请参阅:
- How to navigate in JSF? How to make URL reflect current page (and not previous one)
- Difference between View and Request scope in managed beans