Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf:验证错误值对于SelectOneMenu无效_Jsf - Fatal编程技术网

Jsf:验证错误值对于SelectOneMenu无效

Jsf:验证错误值对于SelectOneMenu无效,jsf,Jsf,我有一个selectMenu,在handler中定义了(SelectItems)列表,如下所示 Handler { List(SelectItem) stateList; State state; } State { String stateCd; } JSF代码:: <h:selectOneMenu value="#{state.stateCode}"> <f:selectItems value="#{handler.stateList}"> </h:sel

我有一个selectMenu,在handler中定义了(SelectItems)列表,如下所示

Handler { List(SelectItem) stateList; State state; }
State { String stateCd; }
JSF代码::

<h:selectOneMenu value="#{state.stateCode}">
  <f:selectItems value="#{handler.stateList}">
</h:selectOneMenu>

现在我的列表在requestScope中,我看到提交的值是字符串,并且在列表中,但我仍然得到“验证错误:值无效”。有人可以帮助我吗

验证错误:值无效

这意味着所选项目与列表中的任何可用项目都不匹配。也就是说,
stateCode.equals(stateList.get(I))
从未为任何项目返回
true

在验证阶段,
stateList
为空,或者未(正确)实现值类型的
equals()
方法时,可能会发生这种情况

另见:

感谢BalusC的回复,我正在加载列表init()onPreRender(),并且列表在请求范围内,我在保存时遇到此错误,这可能是此错误的原因吗,如果您能建议除了在会话范围内维护之外如何修复此问题,谢谢。要么加载逻辑是假的,
equals()
不是(正确的)执行。你是唯一能找到答案的人。只需调试表单submit,我看到在Validate方法中列表是空的,但是在pageload中创建了列表并且在请求范围内,那么为什么列表是空的呢?在会话范围内维护它以解决此问题对我来说没有意义。您需要在bean的构造过程中或
@PostConstruct
中准备列表。我不知道
onPreRender()
这件事在做什么,这不是标准的JSF,但听起来好像它在渲染响应阶段做这项工作,那就太晚了。