【问题标题】:getSubmittedValue() vs. getValue()getSubmittedValue() 与 getValue()
【发布时间】:2012-06-19 07:17:47
【问题描述】:

这是正确的: 当我在验证之前(或者如果验证失败)查询一个值时,我必须使用getSubmittedValue();。一旦验证了值,即使我稍后在页面/控件中的另一个验证中查询它,我也必须使用 .getValue();,因为 getSubmittedValue(); 在成功验证后返回 null

【问题讨论】:

    标签: xpages


    【解决方案1】:

    This xsnippet 可以更轻松地处理此问题。它允许您调用getComponentValue("inputText1") 来获取值或提交的值。

    这里的函数供参考:

    function getComponentValue(id){
      var field = getComponent(id);
      var value = field.getSubmittedValue(); 
      if( null == value ){ 
             // else not yet submitted 
             value = field.getValue(); 
      }
     
      return value
    }
    

    【讨论】:

      【解决方案2】:

      有一个稍微简单一点的方法:如果你只是期待一个简单的单值字符串,只需调用:

      var compare = firstField.getValueAsString();
      

      否则,调用:

      var compare = com.ibm.xsp.util.FacesUtil.convertValue(facesContext, firstField);
      

      无论如何,前者调用后者,但显然是一种更简洁的语法。这可以满足您的需求以及更多功能:

      1. 如果尚未验证该值,则返回提交的值
      2. 如果验证已通过,则返回已由任何转换器和/或内容过滤器处理后的值,因此特别是在您尝试比较两个字段值的情况下,这应确保两个值都正确修剪等,因此返回误报的可能性低于仅比较原始提交的值。

      【讨论】:

        【解决方案3】:

        找到答案here。因此,当您要确保 2 个文本字段具有相同的值(用例:请重复您的电子邮件)并且第一个框已经有可能失败的验证时,您需要使用提交的值,除非它为空,然后您使用该值.第二个字段的验证表达式中的代码如下所示:

        var firstField = getComponent("inputText1");
        var compare = firstField.getSubmittedValue() || firstField.getValue();
        compare == value;
        

        你必须爱它。

        【讨论】:

          猜你喜欢
          • 2015-04-14
          • 1970-01-01
          • 2010-09-20
          • 1970-01-01
          • 1970-01-01
          • 2020-08-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多