Наряду с парами inputText, одним из обязательных компонентов, которые у меня есть на странице, является p: fileUpload. Поэтому, когда я нажимаю "Отправить", <p:message>
появляется на компоненте, который имеет require=true
, но пользователь не набрал / не выбрал
Я хочу, чтобы красное поле Required
также появилось рядом с компонентом загрузки. Вот что я попробовал.
1. когда я устанавливаю required="true"
в p: fileUpload, на самом деле ничего не происходит (не уверен, что это ошибка).
2 Я положил validator
в p:fileUpload
, ниже мои источники валидатора
public void validateFileUpload(FacesContext context, UIComponent component,
Object value) throws ValidatorException {
if(value == null){
FacesMessage message = new FacesMessage();
message.setSeverity(FacesMessage.SEVERITY_ERROR);
message.setSummary("Error");
message.setDetail("Required");
throw new ValidatorException(message);
}
}
на самом деле ничего не происходит, когда я нажимаю кнопку отправки, даже когда я выполняю загрузку, validateFileUpload
вообще не вызывается (не уверен, что это ошибка)
3. Когда я нажимаю кнопку «Отправить», если все остальное проходит, и я попадаю в свой метод действия, я могу проверить, является ли файл нулевым или нет, затем вернуть FacesMessage и позволить p: growl его забрать. Однако мне это не нравится, так как это дает пользователю ощущение многоуровневой проверки.
Есть ли способ улучшить проверку p: fileUpload ?