【问题标题】:Dependent Dropdown in JSF fails validationJSF 中的 Dependent Dropdown 验证失败
【发布时间】:2011-10-30 11:31:42
【问题描述】:

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

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

有什么想法可以让它工作吗?

问候, 凯文。

【问题讨论】:

    标签: ajax validation jsf drop-down-menu selectonemenu


    【解决方案1】:

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

    如果此类解决方案有任何问题,请告诉我们,应该有解决问题的方法;关键是,您应该使用视图范围并解决您可能遇到的任何问题,而不是试图逃避它。

    【讨论】:

    • 是的,这解决了我的问题。我将范围从请求更改为查看。我是使用 JSF 的新手,所以我仍然对它有所了解。我仍然不确定为什么查看范围有效而请求范围失败?
    • @kevfuzz:一个普通的 JSF 请求会做两件事:首先它重建前一个请求之后的 Web 界面,然后应用请求带来的任何更改(否则你的 valueChangeListener 将不起作用) ,然后它呈现更改的界面。使用请求范围的 bean,第一阶段将失败:JSF 将尝试重建一个下拉列表,指向某个在选项中不再可用的任意值。只要您停留在同一页面并使用 POST,视图范围的 bean 就会存在,因此值就在那里。顺便说一句:永远不要在构造函数中做任何事情。
    猜你喜欢
    • 2013-02-27
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    • 2012-09-25
    • 1970-01-01
    相关资源
    最近更新 更多