Мое приложение имеет модальную панель, где пользователь может загружать файлы и выбирать «тип документа» в выпадающем списке.
Я использовал <f:setPropertyActionListener>
для установки значения типа документа во время события загрузки, но иногда свойство устанавливается после загрузка была обработана. Вероятно, это происходит потому, что генерируется другой запрос, и этот запрос обрабатывается другим потоком веб-контейнера.
<rich:modalPanel id="attachFiles" autosized="true">
<h:form id="formUpload" enctype="multipart/form-data">
<h:selectOneMenu id="docType" value="#{myMB.docType}" required="true" >
<f:selectItems value="#{myMB.docTypesSelectItems}" />
</h:selectOneMenu>`
<rich:fileUpload id="upload" fileUploadListener="#{myMB.handleUpload}">
<a4j:support event="onupload">
<f:setPropertyActionListener value="#{myMB.docType}"
target="#{myMB.docType}" />
</a4j:support>
</rich:fileUpload>
</rich:modalPanel>
Когда это происходит, значение myMB.docType
равно нулю во время выполнения myMB.handleUpload
, что не ожидается, так как поле должно быть обязательным.
Есть ли способ убедиться, что метод myMB.handleUpload
выполняется только после того, как было установлено свойство docType
?