---------- 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