Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
Ajax JSF中的依赖下拉列表验证失败_Ajax_Validation_Jsf_Drop Down Menu_Selectonemenu - Fatal编程技术网

Ajax JSF中的依赖下拉列表验证失败

Ajax JSF中的依赖下拉列表验证失败,ajax,validation,jsf,drop-down-menu,selectonemenu,Ajax,Validation,Jsf,Drop Down Menu,Selectonemenu,我在JSF页面上有两个相关的下拉列表,可以正常工作。我在第一个下拉列表中使用valueChangeListener,它填充支持第二个下拉列表的列表 然而,当我试图提交表单时,JSF验证失败了。通过测试,我认为问题在于当页面加载时,我的依赖下拉列表为空,然后在第一个下拉列表进行选择后填充它。但是,当页面加载时,依赖列表中现在的值都不在列表中,因此验证失败。我已经通过使用构造函数在页面加载时设置包含所有可能值的列表来确认了这一点,这会使我的问题消失,但是这不是一个可能的解决方案,因为加载所有值会破坏

我在JSF页面上有两个相关的下拉列表,可以正常工作。我在第一个下拉列表中使用valueChangeListener,它填充支持第二个下拉列表的列表

然而,当我试图提交表单时,JSF验证失败了。通过测试,我认为问题在于当页面加载时,我的依赖下拉列表为空,然后在第一个下拉列表进行选择后填充它。但是,当页面加载时,依赖列表中现在的值都不在列表中,因此验证失败。我已经通过使用构造函数在页面加载时设置包含所有可能值的列表来确认了这一点,这会使我的问题消失,但是这不是一个可能的解决方案,因为加载所有值会破坏页面的性能

有什么办法让它工作吗

问候,,
Kevin。

这正是视图范围bean的用例。在这种情况下,使用请求范围的bean违背了JSF的原则(可能,但很痛苦——就像使用刺猬作为沐浴海绵一样)


如果这些解决方案存在任何问题,那么告诉我们,应该有一种方法来缓解这些问题;关键是,您应该使用视图范围并解决可能存在的任何问题,而不是试图逃避它。

是的,这解决了我的问题。我将范围从请求更改为视图。我对使用JSF还不太熟悉,所以我还是很熟悉它。我仍然不知道为什么视图作用域工作而请求作用域失败?@kevfuzz:一个普通的JSF请求做两件事:首先,它按照前一个请求后的方式重建web界面,然后应用请求带来的任何更改(否则您的valueChangeListener将无法工作),然后呈现更改后的界面。对于请求范围的bean,第一阶段将失败:JSF将尝试重建一个下拉列表,指向一些选项中不再可用的任意值。只要您停留在同一页面上并使用POST,视图范围的bean就会存在,因此值就存在。顺便说一句:不要在构造函数中做任何事情。