【问题标题】:Jsf : Validation error value is not valid for SelectOneMenu [duplicate]Jsf:验证错误值对 SelectOneMenu 无效 [重复]
【发布时间】:2011-06-01 18:46:42
【问题描述】:

我有一个 selectMenu,在处理程序中定义的 (SelectItems) 列表如下

Handler { List(SelectItem) stateList; State state; }
State { String stateCd; }

JSF 代码::

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

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

【问题讨论】:

    标签: jsf


    【解决方案1】:

    验证错误:值无效

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

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

    另见:

    【讨论】:

    • 感谢 BalusC 的回复,我正在加载列表 init() onPreRender(),并且列表在请求范围内,我在保存时收到此错误,可能是此错误的原因, 如果你能建议我如何解决这个问题,除了在会话范围内维护之外,谢谢。
    • 加载逻辑是假的,或者equals() 没有(正确)实现。你是唯一能发现这一点的人。只需调试表单提交即可。
    • 我看到在 Validate 方法中列表是空的,但是在页面加载时列表被创建并且在请求范围内,那么为什么列表会是空的?在会话范围内维护它以解决此问题对我来说没有意义。
    • 你需要在bean的构建过程中准备列表或@PostConstruct。我不知道onPreRender() 的东西在做什么,这不是标准的 JSF,但听起来好像它在渲染响应阶段完成了这项工作,那就太晚了。
    猜你喜欢
    • 2011-10-31
    • 2013-04-09
    • 2011-09-13
    • 2013-08-04
    • 2012-11-22
    • 2017-11-10
    • 2012-11-25
    • 2013-01-06
    相关资源
    最近更新 更多