我曾谘询过几个权威人士,但他们要么真的互相矛盾,要么我误解了他们,或者可能发生了不止一个转变?JSF的1.x和2.x版本之间有区别吗?
此IBM邮报声明转换发生在应用请求值阶段(第2阶段)中。
此BalusC发帖表示这里默认转换发生在流程验证阶段(第3阶段)中。
Oracle JEE6教程意味着转换发生在更新模型值阶段(第4阶段)中,在对此阶段的描述中这样说:
如果本地数据不能转换为bean属性指定的类型。
另一方面,说明同一教程中的各个阶段的图形显示了过程验证阶段和更新模型值阶段所产生的转换错误。
上述所有帖子都指出,如果将immediate属性设置为true,则在应用请求阶段中处理所有转换和验证。这意味着该阶段的转换不是默认行为。
谢谢
发布于 2012-10-11 10:37:23
来自UIInput文件强调地雷
在请求处理生命周期的应用请求值阶段,该组件的解码值(通常但不一定是字符串)必须使用setSubmittedValue()存储(但尚未转换为)。如果组件希望指示未提交特定值,则可以不执行任何操作,也可以将提交的值设置为空。 默认情况下,在请求处理生命周期的流程验证器阶段,提交的值将被转换为typesafe对象,如果验证成功,则使用setValue()存储为本地值。但是,如果立即属性设置为true,则将在Apply请求值阶段结束时进行此处理。 在请求处理生命周期的呈现响应阶段,输出的转换与UIOutput一样。JSF1.x和2.x版本之间没有区别。
https://stackoverflow.com/questions/12836955
复制相似问题