【问题标题】:File upload validation in xPagesxPages 中的文件上传验证
【发布时间】:2012-09-11 13:09:21
【问题描述】:

根据这篇文章 http://www-10.lotus.com/ldd/ddwiki.nsf/revisions/6A9EDD911827AA13852574EA00388F8F?OpenDocument 简单的验证应该适用于文件上传控件。我正在尝试在 extLib 表单表中使用它。

我想验证用户是否选择了一个文件,但无法让它在服务器端验证中工作。也尝试使用自定义验证器,但仍然没有运气。其他必填字段标记为正常,但不是上传控件。

有谁知道如何验证用户是否确实选择了文件?

【问题讨论】:

    标签: validation xpages


    【解决方案1】:

    验证仅适用于客户端验证。有一些解决方法:

    1. 验证文件是否已附加的最简单方法是将验证字段添加到您的表单并设置数据源的属性computeWithForm="onsave"。只要您想保存文档,就会引发验证错误并中断保存。 验证字段是一个简单的可编辑字段,其验证公式如下:

      @If(@Attachments = 0;@Failure("No File attached!");@Success)
      
    2. querySave 事件中检查您的数据源:

      if( document1.getAttachmentList("Body").isEmpty() ){
          var msg = new javax.faces.application.FacesMessage("No File added!");
          facesContext.addMessage( "No File!", msg );
          return false;
      }
      

    这两种解决方法仅在文档是新创建的情况下才有效。附加文件后,这两个选项不再起作用。

    如果你想检查已经存在的文档,你可以在这里使用这个 XSnippet: http://openntf.org/XSnippets.nsf/snippet.xsp?id=replace-attachment-when-uploading-a-new-attachment

    然后您必须修改 XSnippet 以满足您的要求并添加一条消息(如第二个示例所示)。

    希望对你有帮助

    斯文

    【讨论】:

    • 好的,谢谢您的回复。我们预计也许这就是答案。我们希望我们可以对表格表行中的必填字段使用自动警告,但猜测我们需要使用客户端 javascript 来模拟该功能。 . .
    【解决方案2】:

    我知道几个月前有人问过这个问题并得到了回答,但是今天我正在寻找同样问题的答案时,我发现了这个问题。

    虽然 Sven 的回答没有直接帮助,但选项 #2 为我的解决方案提供了最终提示。也许它也可以对其他人有用:

    首先,我的页面使用标准按钮(不是“提交”类型的按钮,因为我需要设置一些隐藏字段以及可编辑字段)。所以,在最终保存完成之前,我将此脚本添加到我的按钮代码中:

    var numAtts = myDocDatasource.getAttachmentList("Body").size();
    if(numAtts == 0){
        var msg = new javax.faces.application.FacesMessage("You need to attach a file");
        facesContext.addMessage("File validation error", msg);
        return false;
    }
    //do some more stuff
    ...
    myDocDatasource.save();
    

    我必须意识到,在验证过程中,fileUpload 控件的内容并不重要,因为在该过程的那个阶段,上传的文件已经是数据源的一部分。

    这个验证步骤的“时机”有点令人惊讶:至少在我的情况下,其他字段的验证是在文件上传验证之前完成的: 在 errorMessages 控件中,首先只列出标准验证错误。只有在所有其他字段都已成功验证后,我的 fileUpload 验证器才会显示其错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-18
      • 2015-02-25
      • 2018-01-14
      • 2016-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多