Как я могу проверить, выбран ли файл с помощью t: inputFileUpload перед отправкой/загрузкой

Я хотел знать, можно ли проверить, выбран ли файл до нажатия кнопки отправки/загрузки?

Проблема, которую я хочу решить с помощью этой опции, состоит в том, чтобы скрыть кнопку «отправить/загрузить», если файл еще не выбран? Использование атрибута required="true" для меня не вариант, потому что пользователю не всегда нужно предоставлять файл.


person mnish    schedule 01.12.2011    source источник


Ответы (1)


Это возможно, если изначально скрыть кнопку загрузки с помощью CSS и прикрепить некоторый JS к событию change поля файла, которое отображает кнопку загрузки, если файл был выбран.

<h:form id="form">
    <t:inputFileUpload id="file" value="#{bean.file}" required="true" 
        onchange="document.getElementById('form:upload').style.display = (!!value) ? 'block' : 'none'" />
    <h:commandButton id="upload" value="Upload" action="#{bean.upload}" style="display: none;" />
</h:form>
person BalusC    schedule 01.12.2011
comment
Спасибо за ваш ответ. То, что вы предложили, - хорошая идея, но размытие происходит только тогда, когда пользователь нажимает где-то еще, кроме кнопки обзора. Таким образом, пользователь не знает, что он/она должен делать, когда файл выбран, пока он/она случайно не щелкнет что-то еще и не увидит, что отображается кнопка отправки. Кроме того, даже если пользователь не выбирает файл, появится кнопка отправки, которую он/она может нажать на кнопку отправки, в то время как файл не выбран, и поэтому я получаю некоторые ошибки относительно файла bean.file. Разве jsf ничего не дает для проверки содержимого компонента или что-то в этом роде? - person mnish; 01.12.2011
comment
@BalusC Как я могу сделать что-то подобное, но для отключения/включения командной кнопки? - person coffeMug; 30.10.2018