o:inputFile可选,接受验证



我想添加一个可选的"附加截图"字段到我的表单,所以我使用0:inputFile组件:

<o:inputFile id="file" required="false" maxsize="1048576"  accept="image/png,image/gif" />

如果我留下空白字段,我得到一个错误:附加截图:媒体类型的文件"不匹配'image/png,image/gif'

我如何使验证是可选的?

这是由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' 
              : '*/*'}"

我将根据315期修复即将到来的OmniFaces 2.6。

相关内容

  • 没有找到相关文章

最新更新