#jsf #richfaces
#jsf #richfaces
Вопрос:
Я использую a <rich:tabpanel>
с 3 вкладками. На 2-й вкладке у меня есть 3 <rich:fileUpload>
компонента. Все 3 поля являются обязательными. Следовательно, я выполняю проверку в вспомогательном компоненте при отправке содержимого на странице.
Если я выбираю файл в одном из компонентов загрузки файла и оставляю другие 2 пустыми, то я получаю сообщения о проверке для двух пустых компонентов, как и ожидалось. Однако первый компонент также повторно отображается и не сохраняет выбранный файл, хотя содержимое файла по-прежнему сохраняется в свойстве резервного компонента.
Как я могу сохранить выбранный файл при повторной визуализации?
Ответ №1:
Просто не перерисовывайте сами поля ввода, а только владельца (ов) сообщений о проверке. Вы можете сделать это с помощью, <a4j:commandButton>
где вы указываете идентификаторы компонента (ов) сообщения в reRender
атрибуте (я предполагаю, что вы используете RichFaces 3.3, а не 4.0, поскольку по умолчанию невозможно выбрать один файл для загрузки в текущем 4.0).
Обратите внимание, что вам не нужно проверять наличие требований в методе action. Достаточно просто установить required="true"
для компонента (ов) ввода.
Комментарии:
1. Спасибо BalusC. Большой поклонник 🙂 Работает ли это и для rich: FileUpload? Я попробую еще раз. Я не делаю никакого конкретного повторного рендеринга. У меня есть <h: commandbutton>, который я использую для отправки, и как только я отправляю, появляется новый компонент. Еще раз спасибо за ваше драгоценное время.
2. О, моя ошибка, поскольку вы использовали RichFaces, я ожидал, что вы используете
<a4j:commandButton>
, который выполняет отправку Ajax и повторную визуализацию. Я отредактировал ответ.3. Привет — Пробовал использовать a4j: CommandButton внутри <h:form> , но все равно кажется, что вся страница обновляется вместо компонентов, которые я настроил на повторный рендеринг. required = true также, похоже, не работает с компонентом rich: FileUpload.
4. Я так сожалею, что потратил ваше время, глупый я — я вернул элемент управления на страницу, а не установил null при сбое проверки. Но сообщение об ошибке сейчас не отображается: (
5. Теперь работает. Я использовал a4g: компоненты fileupload для переноса области и компоненты message — заменил его на h: outputtext. Спасибо BalusC. Однако required=»true», похоже, не работает с rich:FileUpload.