【问题标题】:Seam: Validation of s:fileUpload?Seam:验证 s:fileUpload?
【发布时间】:2011-08-04 02:34:57
【问题描述】:

我有一个 JSF 页面,允许用户上传图片。我想对上传的文件进行一些验证,以确保它的大小、尺寸、内容类型等正确。我创建了一个 JSF 验证器,并尝试在 <s:fileUpload validator="XXX" /> 属性中指定它,以及使用<f:validator /> 标签。但是,无论我尝试什么,我的验证器都不会被调用。有什么方法可以验证 Seam 中的文件上传吗?使用<rich:fileUpload /> 可以让我对上传的文件进行验证吗?

【问题讨论】:

    标签: validation jsf file-upload richfaces seam


    【解决方案1】:

    经过大量试验和错误,我刚刚决定在我的提交方法中进行手动验证。我还没有找到让 Validator 对象成功工作的方法。

    【讨论】:

      【解决方案2】:

      您可以尝试使用类似的侦听器(如果您的约束失败,不确定事件是否有可调用的取消方法,但您可以检查):

      public void listener(UploadEvent event) throws IOException {
          UploadItem item = event.getUploadItem();
      
          String name = "unnamed_attachment";
          byte[] data = item.getData();
      
          if (item.isFile()) {
              name = FilenameUtils.getName(item.getFileName());
              data = FileUtils.readFileToByteArray( item.getFile() );
          }
      
          debug("file uploaded '#0' : '#1'", name, item.getFileName());
      

      还有一些你可以放在 components.xml 中的约束,比如:

      <web:multipart-filter create-temp-files="false" max-request-size="5200000" url-pattern="/*"/>

      【讨论】:

      • 我之前使用过 的监听器,但从未使用过 。该组件是否支持?还是只有 RichFaces 组件?
      • 是的,你是对的,s:fileUpload 不存在 actionListener。也许你可以使用转换器?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-05
      • 1970-01-01
      • 2010-09-16
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      相关资源
      最近更新 更多