据我所了解,当JSF操作返回""
(空字符串)时,用户会停留在当前页面,但视图会被刷新。然而,当操作返回null
时,用户仍然停留在当前页面,但旧视图会被重用。我的问题是:
- 以上说法正确吗?
- 如果是,那么这意味着什么?具体来说,使用其中之一与使用另一个对页面上的数据有什么影响(例如,JSF UI组件中的值或存储在DataTable中的请求范围Bean中的数据)?
- 在什么情况下应该使用其中之一?
据我所了解,当JSF操作返回""
(空字符串)时,用户会停留在当前页面,但视图会被刷新。然而,当操作返回null
时,用户仍然停留在当前页面,但旧视图会被重用。我的问题是:
上述陈述是否正确(准确)?
是的。你可以选择返回 null
或者直接返回 void
,两种方法都可以。
如果是正确的话,那么这会产生什么影响?具体来说,一个与另一个相比在页面数据(JSF UI组件中的值或存储在DataTable中的请求作用域bean中的数据)上有什么影响?
对于请求作用域bean没有影响。只有在使用JSF2视图作用域bean时才有影响。如果返回 null
或者 void
,则该视图作用域bean实例将在下一次请求中保留,否则它将被重新创建。
在什么情况下应该使用其中之一?
如果希望在后续请求中保留JSF2视图作用域bean,则应返回空。
null
或void
即可。 - BalusCvoid
返回类型时出错,但无法记住是哪个供应商/版本。 - McDowellMethodExpression
表示的内容都是合法的操作方法,即使是在EL 2.2中可能需要参数的方法也是如此。那个规范引用可能是JSF 1.0的遗留物。 - BalusC