繁体   English   中英

什么时候在JSF中确实发生了值转换?

[英]When exactly does the value conversion happen in JSF?

我咨询了几个权威人士,但是他们是真的互相矛盾,还是我误解了他们,或者说有不止一次转换? JSF的1.x和2.x版本之间是否存在差异?

IBM帖子声明转换发生在Apply请求值阶段 (阶段2)。

BalusC 这篇文章中说,默认转换发生在流程验证阶段 (阶段3)。

Oracle JEE6教程暗示转换发生在更新模型值阶段 (阶段4),在此阶段的描述中说:

如果本地数据无法转换为bean属性指定的类型。

另一方面,说明同一教程中阶段的图形显示了从流程验证阶段更新模型值阶段出现的转换错误。

以上所有帖子都指出,如果immediate属性设置为true,则在Apply请求阶段处理所有转换和验证。 这意味着该阶段的转换不是默认行为。

谢谢

UIInput的文档 [强调我的]:

在请求处理生命周期的“ 应用请求值”阶段期间,必须使用setSubmittedValue()存储此组件的解码值(通常但不一定是String),但尚未转换 如果组件希望指示没有提交特定值,则它可以不执行任何操作,或将提交的值设置为null。

默认情况下,在请求处理生命周期Process Validators阶段,提交的值将转换为typesafe对象 ,如果验证成功,则使用setValue()存储为本地值。 但是,如果将immediate属性设置为true,则此处理将在Apply Request Values阶段结束时发生。

在请求处理生命周期的渲染响应阶段,输出转换与UIOutput一样。 JSF 1.x和2.x版本之间没有区别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM