JSF выбрасывает FacesMessage из обычного метода bean - PullRequest
1 голос
/ 27 апреля 2011

В пользовательских конвертерах и валидаторах JSF вы можете сказать:

FacesMessage message = new FacesMessage(
    FacesMessage.SEVERITY_ERROR, "Invalid length!",
    "Length = 8");
throw new ConverterException(message);

и ti отправляет сообщение некоторому компоненту h: message, определенному преобразователем или валидатором. Есть ли способ сделать что-то подобное в обычном методе bean (и если да, то как определить, что компонент h: message будет отображать сообщение), или лучший способ - выполнить всю работу по проверке в пользовательских валидаторах и оставить бизнес логика без проверок для методов bean.

1 Ответ

5 голосов
/ 27 апреля 2011

Конечно, иногда вы не можете рассчитывать только на Validators, но вам нужно выполнить некоторую проверку в bean-компоненте.(В большинстве случаев вам нужен такой вид проверки, когда вы проверяете данные для нескольких входов вместе)

В этом случае, если у вас есть элемент управления h:messages на странице, это покажет ошибку там:

FacesContext.getCurrentInstance().addMessage(null,
                        new FacesMessage("This username already exists!"));

Если вы хотите отображать сообщения проверки для каждого компонента и не использовать общее для каждой страницы, см. этот ответ.

Ps : Обратите внимание, что если вы используете h:messages, на нем также будут отображаться сообщения проверки других компонентов.Если вы не хотите этот набор globalOnly="true"

...