【问题标题】:Custom validator for file upload in primefaces 3.5 [duplicate]primefaces 3.5中文件上传的自定义验证器[重复]
【发布时间】:2016-10-24 10:18:49
【问题描述】:

我想为高级文件上传编写一个自定义验证器,我可以在其中检查文件的大小,如果文件大于最大大小,则抛出验证消息。 但是,验证器永远不会被调用。可以吗,有人请帮忙吗?

【问题讨论】:

  • 看看这篇文章(我的意思是像解释的那样做)File Upload 并查看primefaces上传页面Primefaces Size的大小
  • 如果多个文件的组合大小大于最大大小,我想显示验证错误。

标签: jsf file-upload primefaces


【解决方案1】:

您使用p:fileUplaod 上传的文件大小默认是无限的,要设置大小限制,您可以使用sizeLimit,如果您上传的文件大小大于限制,则会显示错误消息。您可以在 Primefaces 网站Primefaces Upload File 中了解更多信息。

【讨论】:

  • 那个sizeLimit是针对单个文件的,我想计算所有文件的大小,然后看看这个大小是否大于最大大小。
【解决方案2】:

首先看这篇帖子Upload File Step by Step 了解如何上传文件,对于大小限制,您只需检查所有文件大小,它看起来像这样:

Long size;
Long sizeLimite = 100000 ;
List<FileUploadEvent> e = new ArrayList<>();

对于每个 FileUploadEvent :

size = eventUpload.getFile().getSize() + size;
e.add(eventUpload);

最后:

if(size < sizeLimite ) {
 executUpload(e);
}
else{
FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(" NO GOOD SIZE"));
}

在我给你的例子中,它是一个循环,你只需要复制它并让第一个检查大小,如果条件为真,第二个执行上传方法。

【讨论】:

  • 我使用远程命令从命令按钮调用了两种方法。一种用于文件上传,一种用于提交数据。我计算了大小,如果大小更大,我存储了 Faces 消息。我想在 xhtml 上显示该消息,而不调用其他提交数据的方法。
  • 我会更新我的答案
  • 你在找什么?!? @user5268
  • 在我的表单中,文件上传不是必需的,所以我从远程命令调用了第二种方法。因此,问题在于 Faces 消息即将到来,但在此之后它调用了第二种方法。我希望它表现得像一个验证器。
  • 你可以避免使用远程命令我会更新我的答案来清除这一点
猜你喜欢
  • 1970-01-01
  • 2016-02-29
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-01
  • 2017-05-17
  • 2023-03-30
相关资源
最近更新 更多