---------- Forwarded message ----------
From: Martin Marinschek <[EMAIL PROTECTED]>
Date: Aug 5, 2005 11:05 AM
Subject: Re: Messages and navigation rule redirects post
To: Johannes Hiemer <[EMAIL PROTECTED]>

Nice solution,

even though a bit verbose... You might want to try a phase-listener wich you add before the render response phase and which checks for this bean and adds the messages to the context instead of doing that in a bean as well.

regards,

Martin


On 8/5/05, Johannes Hiemer < [EMAIL PROTECTED]> wrote:

Hi Richard, Hi Martin,
perhaps I got something. I took my time this morning and spend it trying some things. In my implementation I got a standard BaseController for all my handlers. So I thought, why should I use this BaseController to save this message for a while. After a few minutes I got a working solution.
Here is my code:

##### BaseController #####

private static FacesMessage notification;

        /**
         * @return Returns the notification.
         */
        public FacesMessage getNotification() {
                return notification;
        }

        /**
         * @param notification The notification to set.
         */
        public void setNotification(FacesMessage notification) {
                this.notification = notification;
        }

###### faces-config.xml ########

<managed-bean>
                <managed-bean-name>BaseController</managed-bean-name>
                <managed-bean-class>
                        itecon.web.resource.BaseController
                </managed-bean-class>
                <managed-bean-scope>session</managed-bean-scope>
        </managed-bean>


This is my BaseController, now we get to the SparepartHandler.java where actually the first stept happens.

public String add() {
                message = this.getMessage();
                 log.info (message);
                String notification = Utils.getMessageResourceBundle(getBundle(), "internalDatasetExists", null, getLocale());
                setNotification(new FacesMessage(FacesMessage.SEVERITY_INFO, notification, notification));
                return message;
        }

As you can see, I get my notification from my ResourceBundle of the Application. After the I put it through BaseController.setNotification into my private static FacesMessage notification;
Till here - fine.

No I have a second managed bean called: NotificationHandler.

##### NotificationHandler.java #######

public class NotificationHandler extends BaseController implements Serializable {

        private String hiddenField = null;

        public void pageLoad() {
                log.info(getNotification());
                facescontext.addMessage("globalMessage", getNotification());
        }

        /**
         * @return Returns the hiddenField.
         */
        public String getHiddenField() {
                return hiddenField;
        }

        /**
         * @param hiddenField The hiddenField to set.
         */
        public void setHiddenField(String hiddenField) {
                this.hiddenField = hiddenField;
        }
}

The hiddenField was created because I don't know another way to initialize the managed-bean through my success.jspx
That's my managed bean in my faces-config.xml

###### faces-config.xml #####
<managed-bean>
                <managed-bean-name>notificationSpringBean</managed-bean-name>
                <managed-bean-class>
                        itecon.web.controller.NotificationHandler
                </managed-bean-class>
                <managed-bean-scope>session</managed-bean-scope>
                <managed-property>
                        <property-name>pageLoad</property-name>
                        <value>true</value>
                </managed-property>
        </managed-bean>

And last but not least my success.jspx.

####### success.jspx ######

<h:form id="form">
        <h:panelGrid columns="3" styleClass="parentTable" headerClass="tableHeader" columnClasses="childTable">
                <f:facet name="header">
                        <h:outputText id="closer" value="YIIPPIIEIIOOO SCHWEINEBACKE" />
                </f:facet>
                <h:inputHidden id="hiddenField" value="#{notificationSpringBean.hiddenField}" />
                <x:messages id="globalMessage" layout="table"
                showSummary="true" showDetail="false" />
        </h:panelGrid>
</h:form>


As attachement the result.
To proove it:
Here the extract of my Resources.properties
internalDatasetExists=Dataset already exists

Try it, tell me If I am wrong, or if there better ways to do it.

Regards Johannes

______________________________________________________________
Verschicken Sie romantische, coole und witzige Bilder per SMS!
Jetzt bei WEB.DE FreeMail: http://f.web.de/?mc=021193




Reply via email to