2
我有一个由List驱动的SelectOneMenu,每个List都包含一个对象值和一个字符串标签以及一个转换器。所有相当标准。我最初得到了Validation Error: Value is not valid错误,因为在等号方法中有一个错误,但是如何修复的快速搜索引发了另一个问题:关闭SelectOneMenu内部验证
我的理解是,在这种情况下会发生什么:
- 在菜单中选择一个项目。
- 这将向服务器发送一个字符串值。
- 转换器用于将字符串值转换为对象。
- JSF检查该对象是否存在于项目列表中。
- setter方法被称为传递对象。
如果是这样,那么我可以禁用第4步?如果该值无效,我的转换器将抛出一个ConverterException,因此对于我来说,第二个列表遍历是完全没有必要的。
干杯,
巴尼
“你不能关掉它”:是的 - 这就是我所害怕的。 “......或者寻找一个不太安全的MVC框架......”:对不起,我完全不同意这样做的含义,即将此验证选项设置为使框架更安全。我已经有两个机会在检查列表之前验证数据(自定义验证器和转换器)。如果没有其他检查存在,我可以看到这是作为默认检查的有用性,但我仍然没有理由迫使我进行完全冗余的验证。 – Barney 2011-01-22 04:34:23