Как вернуть сообщения о состоянии в JSF?

Я буду довольно объективен:

Пользователь регистрируется, после этой операции зарегистрируйтесьЯ хотел бы показать какое-то сообщение о Поздравляем! Добро пожаловать! , что-то в этом роде или какое-то сообщение, если есть какая-то проблема, например дублированный ключв моей базе данных.

Я уже знаю, как отображать некоторые сообщения с помощью RichFaces, но я хочу, чтобы это было просто, RichFaces немного путается с CSS, поэтому я пока не хочу этого делать.

Итак, вот моя страница и мои управляемые компоненты:

    <h:form id="form_user">
        <h:panelGrid columns="3">
            <h:outputLabel for="name" value="Name:" />
            <h:inputText id="name" value="#{personc.personb.person.name}">
                <f:ajax event="blur" listener="#{personValidate.name}" render="m_name" />
            </h:inputText>
            <h:message id="m_name" for="name" />

            <!--other fields...-->

            <h:commandButton value="Register" action="#{personc.register}">
                <f:ajax execute="@form" render="@form" />
            </h:commandButton>

        </h:panelGrid>
    </h:form>

Person Controller (в соответствии со структурой MVC):

@ManagedBean(name="personc")
@SessionScoped
public class PersonController implements Serializable {
    private static final long serialVersionUID = 2000186666864113813L;

    // attributes
    @EJB PersonEAO personEAO;
    private PersonBean personb;

    public PersonController() {
        personb = new PersonBean();
    }

    // methods
    public String register(){
        if (personEAO.register(personb.getUser(), personb.getPerson())){
            status = "welcome!";
            return "success";
        }else{
            status = "an error occurs";
            return "failure";
        }
    }
        // others methods..

И сущность PersonEAO:

@Stateless
@LocalBean
public class PersonEAO {
    @PersistenceContext
    EntityManager em;

    public PersonEAO() {}

    public boolean register(User user, Person person){
        try{
            em.persist(user);

            person.setUser(user);
            em.persist(person);
        }catch(Exception e){
                    // would like to treat better the exceptions here 
                    // should I keep returning boolean here ? or a string would be better ? 
            return false;
        }
        return true;
    }

У меня есть несколько вопросов:

Следует ли мне продолжать возвращаться booleanиз операций с JPA, я хотел бы дать пользователю лучшее сообщение о том, что произошло, например, дубликат ключа.

5
задан Tiny 10 November 2014 в 15:59
поделиться