Отправить форму с загрузкой файла
Я хотел бы реализовать форму с загрузкой файлов. Я попробовал это.
<f:websocket channel="uploadProgress" scope="view" onmessage="updateProgressBar" />
<h:form id="form" enctype="multipart/form-data">
<h:panelGrid columns="2" styleClass="new_table">
..................
</h:panelGrid>
<div class="row">
<h:messages id="uploadMsgId" globalOnly="true" showDetail="false" showSummary="true"/>
<h:inputFile id="fileToUpload" required="true" requiredMessage="No file selected ..." value="#{newProcedure.file}"/>
<h:message showDetail="false" showSummary="true" for="fileToUpload"/>
<h:commandButton value="Upload" action="#{newProcedure.upload()}">
<f:ajax execute="@form" onevent="progressBar" render="@form"/>
</h:commandButton>
<div>
<div id="progressBarId" width="250px;" height="23"/>
</div>
</div>
<h:commandButton styleClass="button" value="Create Procedure" action="#{newProcedure.addNewProcedure(1)}">
<f:ajax render="@form" execute="@form"></f:ajax>
</h:commandButton>
</h:form>
Я могу загрузить файл, когда нажимаю внутреннюю кнопку h:commandButton, но когда я нажимаю вторую кнопку, чтобы отправить форму с вложенным файлом, ничего не происходит. Есть идеи, почему это не работает? Также, если нет выбранного файла, как я могу отправить форму без прикрепленного файла? Мне нужно осуществить некоторые проверки?