我有一个JSF表单,其中包含一个Primefaces fileupload组件 .

fileupload组件的必需属性不起作用;当我点击没有文件附件的表单发送按钮时,表单将被发送,并且不会显示任何错误消息 .

这是我用于测试的简化表单代码:

<h:form id="NewRegistryForm">
  <fieldset>
    <p:outputLabel for="address" value="Address" />
    <h:inputText 
        name="address" 
        value="#{registryBean.address}" 
        required="true" 
        requiredMessage="Address field is required" />
  </fieldset>
  <fieldset>
    <p>File attachments:</p>
    <p:fileUpload 
      fileUploadListener="#{registryBean.handleFileUpload}" 
      mode="advanced" 
      label="Choose file"
      multiple="true" 
      update="registryFileList"
      invalidFileMessage="Invalid file type"
      sizeLimit="512000" 
      fileLimit="15" 
      allowTypes="/(\.|\/)(jpg|png|gif|pdf|odt|doc|docx)$/i" 
      onstart="setSubmitButtonEnabled(false)" 
      oncomplete="setSubmitButtonEnabled(true)" 
      onerror="setSubmitButtonEnabled(true)" 
      auto="true" 
      required="true"
      requiredMessage="A file attachment is required." />
  </fieldset>
  <p:dataList id="registryFileList" value="#{registryBean.uploadedFiles}" 
  var="file" emptyMessage="" >#{file.file.fileName}, #{file.file.size}</p:dataList>
  <p:commandButton 
    type="submit" 
    action="#{registryBean.sendRequest}" 
    value="Send form" 
    validateClient="true" />
</h:form>

当字段未填充时,必需的文本输入字段显示错误消息,但文件上载组件在未附加文件时不产生任何消息 . 我究竟做错了什么?