Here you go.

We include this file in every page 

<%@ taglib uri="http://java.sun.com/jsf/html"; prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core"; prefix="f"%>
<%@ taglib uri="http://myfaces.apache.org/tomahawk"; prefix="t"%>
<%@ taglib uri="http://c2glogistics.com/cms"; prefix="cms"%>

<h:panelGrid styleClass="group" columns="2" cellpadding="2" cellspacing="0"
width="100%" columnClasses="buttonCol, leftAlignCol"
rowClasses="vertAlignTop" rendered="#{! empty facesContext.maximumSeverity}"
>
        <h:graphicImage value="#{PageMessages.messageImage}" style="float:
left; vertical-align: top;" />  
        <h:panelGrid columns="1" cellpadding="2" cellspacing="2"
columnClasses="leftAlignCol" rowClasses="vertAlignTop" width="100%">    
            <h:outputText value="#{PageMessages.messageHeader}"
escape="false" rendered="#{PageMessages.renderMessage}"/>
            <h:messages errorClass="errorMessage" infoClass="infoMessage"
layout="table" globalOnly="true" showDetail="false" showSummary="true"/>
        </h:panelGrid>
</h:panelGrid>

It is backed up by a request-scoped backing bean which knows how to place
message-specific images into the page

import javax.faces.application.FacesMessage;
import javax.faces.application.FacesMessage.Severity;

import org.apache.commons.lang.StringUtils;

import cms.beans.Messages;

public class PageMessages extends AbstractUIBean {
        private static final long serialVersionUID = -6479897299239746841L;
        private static final String BEAN_NAME =
PageMessages.class.getName();
    private String messageHeader;
    private String messageImage;
    private Severity severityLevel;

    public PageMessages() {

        messageHeader = null;
        
        // See if there are messages queued for the page
        severityLevel = getFacesContext().getMaximumSeverity();
        if (null != severityLevel) {
            getLogger().debug("Severity Level Trapped: level = '" +
severityLevel.toString() + "'");
            if (severityLevel.compareTo(FacesMessage.SEVERITY_ERROR) == 0) {
                messageHeader = Messages.getString("PAGE_MESSAGE_ERROR");
                messageImage = "resources/warning.gif";
            } else if (severityLevel.compareTo(FacesMessage.SEVERITY_INFO)
== 0) {
                messageHeader = null;
                messageImage = "resources/information.gif";
            } else if (severityLevel.compareTo(FacesMessage.SEVERITY_WARN)
== 0) {
                messageHeader = null;
                messageImage = "resources/warning.gif";
            } else if (severityLevel.compareTo(FacesMessage.SEVERITY_FATAL)
== 0) {
                messageHeader = Messages.getString("PAGE_FATAL_ERROR");
                messageImage = "resources/stop.gif";
            }
        } else {
            getLogger().debug("Severity Level Trapped: level = 'null'");
        }
    }
    public Boolean getRenderMessage() {
        return new Boolean(StringUtils.isNotBlank(getMessageHeader()));
    }
    /*
     * Local Methods
     */
    /*
     * Overrides
     */
    public String getBeanName() {
        return BEAN_NAME;
    }

    /*
     * Actions
     */
    /*
     * Listeners
     */
    /*
     * Validators
     */
    /*
     * Accessors
     */
    public String getMessageHeader() {
        return messageHeader;
    }
    public String getMessageImage() {
        return messageImage;
    }
}
        

-----Original Message-----
From: Aleksei Valikov [mailto:[EMAIL PROTECTED] 
Sent: Friday, May 26, 2006 6:19 AM
To: MyFaces Discussion
Subject: Re: Handling and displaying action errors

Hi.

> The action method bindings of the backing beans process the request 
> and can determine the next view through returning a navigation 
> control. Null re-displays the current view so you can set up logic 
> which goes
> 
> If (someBusinessLogic()) {
>       displayConfirmationMessage();
>       return myNextView;
> } else {
>       displayErrorMessage();
>       return null;
> }
> 
> We have a message area included on each JSP page which processes 
> actions and inform the user of processing outcomes by using the 
> Message interface and sending warnings, errors and info messages. Each 
> of our backing beans inherits the following
> 
>     protected void setInfoMessage(String msg) {
>         getFacesContext().addMessage(null, new 
> FacesMessage(FacesMessage.SEVERITY_INFO, msg, null));
>     }
> 
>     protected void setWarnMessage(String msg) {
>         getFacesContext().addMessage(null, new 
> FacesMessage(FacesMessage.SEVERITY_WARN, msg, null));
>     }
>     protected void setErrorMessage(String msg) {
>         getFacesContext().addMessage(null, new 
> FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null));
>     }

Well, this looks fine. So you just queue a message for the null client id?
How do you display messages for null within the mage? Could you please post
the corresponding code for the message area?

Thank you.

Bye.
/lexi

Reply via email to