我想在我的表单中添加一个可选的“attach screenshot”字段,所以我使用的是o:inputFile组件:
<o:inputFile id="file" required="false" maxsize="1048576" accept="image/png,image/gif" />
如果我将该字段留空,则会出现错误:附加屏幕截图:媒体类型的文件''与'image / png,image / gif'不匹配
如何使该验证可选?
答案 0 :(得分:1)
这是由MyFaces中的意外行为引起的。它在Mojarra中工作正常,在没有选择文件时给出null
。但是,MyFaces提供了一个非空Part
实例,其文件名为空,大小为0.该空Part
的内容类型默认为application/octet-stream
,因此从不匹配指定的accept
属性。
目前,您最好的选择是根据当前阶段ID和文件大小使accept
属性成为条件。我们希望它始终在渲染响应阶段评估,并且仅在文件大小大于0时在其他阶段评估,否则默认accept
到*/*
。
accept="#{facesContext.currentPhaseId.ordinal eq 6
or component.submittedValue.size gt 0
? 'image/png,image/gif'
: '*/*'}"
我将根据issue 315为即将推出的OmniFaces 2.6修复此问题。