我有一个允许用户上传图像的JSF页面。我想对上传的文件执行一些验证,以确保它是正确的大小,尺寸,内容类型等。我创建了一个JSF验证器,并尝试在<s:fileUpload validator="XXX" />
属性和<f:validator />
标记中指定它。然而,无论我尝试什么,我的验证器都不会被调用。是否有任何方法来验证Seam中的文件上传?使用<rich:fileUpload />
允许我对上传的文件进行验证吗?
经过多次尝试和错误后,我决定在提交方法中进行手动验证。我还没有找到一种方法来让Validator对象成功地工作
您可以尝试使用侦听器(不确定如果约束失败事件是否有取消方法调用,但您可以检查):
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="/*"/>