【问题标题】:Difference between UIInput#getValue() and getLocalValue() during validation验证期间 UIInput#getValue() 和 getLocalValue() 之间的区别
【发布时间】:2012-06-12 12:17:26
【问题描述】:

我想对UIInput componentsgetValue()getLocalValue()方法在执行多字段验证方面的区别进行说明:jsf validate two fields in one time

如果字段已经过验证,使用此方法有什么不同? ValueHolder API documentation 对回答这个问题帮助不大。

【问题讨论】:

    标签: validation jsf jsf-2 lifecycle


    【解决方案1】:

    如果UIInput组件事先已经过验证并被标记为无效(即isValid()方法返回false),那么getLocalValue()返回null,但getValue()返回旧模型值,如果有的话。如果标记为有效,则两者都返回相同的值,即提交、转换和验证的值。

    您想事先在isValid() 上添加支票。您可能会发现OmniFaces 多字段验证器的源代码示例很有帮助。请参阅<o:validateEqual> 展示页面底部的ValidateMultipleFields 源代码链接。

    另见:

    【讨论】:

    • 一般我们应该在什么时候使用getValue()?我在博客中看到我们“必须在编码期间使用 getValue()”,这是我们应该使用它的唯一地方吗?
    • @Tarik:哦,你是说模型值?这发生在更新模型值阶段。另见 a.o. stackoverflow.com/questions/4749451/…
    • @Tarik:验证期间。另请参阅当前问题、“另请参阅”链接和UIInput 源代码:stackoverflow.com/questions/15691126/…
    • @Tarik:没有setLocalValue()setValue() 设置本地值(即处于组件状态),该值在更新模型值阶段(updateModel() 方法)期间重置。 getValue() 如果设置则返回本地值,否则返回模型值。再次,查看源代码(和 javadoc)。
    • @Shirgil:请记住,提交的值、“有效”、本地值和“本地值集”保存在 JSF 视图状态中。 IE。它们是有效的视图范围。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 2017-06-25
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    相关资源
    最近更新 更多