## Error checking mechanism.

The Photo Album application has a global mechanism for errors checking. You become informed about the error each time it occurs. It is possible because the main page of the application `web/src/main/webapp/index.xhtml` includes the `web/src/main/webapp/includes/misc/errorPanel.xhtml`:

    ...

    <a4j:outputPanel id="errors" ajaxRendered="true">

            <h:panelGroup rendered="{errorHandlerBean.errorExist}">

                <rich:modalPanel id="errorPanel" showWhenRendered="true" minWidth="300" minHeight="200" autosized="true">

                          ...

                </rich:modalPanel>

          </h:panelGroup>

    </a4j:outputPanel>

    ...

Here is the listing of the `errorHandlerBean` class:

    package org.richfaces.photoalbum.ui;

    import java.util.ArrayList;

    import java.util.List;

    import org.jboss.seam.ScopeType;

    import org.jboss.seam.annotations.AutoCreate;

    import org.jboss.seam.annotations.Name;

    import org.jboss.seam.annotations.Observer;

    import org.jboss.seam.annotations.Scope;

    import org.richfaces.photoalbum.service.Constants;

    @Name("errorHandlerBean")

    @Scope(ScopeType.EVENT)

    @AutoCreate

    public class ErrorHandlerBean {

        private List<String> errors = new ArrayList<String>();

        public List<String> getErrors() {

            return errors;

        }

        public boolean isErrorExist(){

            return errors.size() > 0 ;

        }

        @Observer(Constants.ADD_ERROR_EVENT)

        public void addToErrors(String e){

            errors.add(e);

        }

    }

The error panel contains the <a4j:outputPanel> component that is rendered on every Ajax request (`ajaxRendered="true"`). If an error is occurred the `isErrorExist()` method of `errorHandlerBean` class returns "true", so the <h:panelGroup> component is rendered. In order to show nested <rich:modalPanel> component with the collected errors the "showWhenRendered" attribute should be set to "true".

The `addToErrors()` method is annotated with `@Observer` annotation, thus it observes all events with `ADD_ERROR_EVENT` constant and adds errors to the `errors` List.