From: Chad B. <cwb...@us...> - 2008-05-28 19:04:27
|
User: cwbrandon Date: 08/05/28 12:04:34 Modified: andromda-jsf2/src/main/resources/templates/jsf2/utils Messages.java.vsl MessagePhaseListener.java.vsl andromda-jsf2/src/main/resources/templates/jsf2/views/portlet messages.xhtml.vsl andromda-jsf2/src/main/resources/templates/jsf2/messages messages.properties.vsl andromda-jsf2/src/main/resources/templates/jsf2/forms FormImpl.java.vsl andromda-jsf2/src/main/resources/templates/jsf2/controllers Controller.java.vsl Log: Add default messages title (and ability to set in in a controller operation) Revision Changes Path 1.3 +11 -0 cartridges/andromda-jsf2/src/main/resources/templates/jsf2/utils/Messages.java.vsl Index: Messages.java.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-jsf2/src/main/resources/templates/jsf2/utils/Messages.java.vsl,v retrieving revision 1.2 retrieving revision 1.3 diff -u -w -r1.2 -r1.3 --- Messages.java.vsl 3 Apr 2008 22:21:20 -0000 1.2 +++ Messages.java.vsl 28 May 2008 19:04:29 -0000 1.3 @@ -58,4 +58,15 @@ } return resourceString; } + + /** + * Gets the message given the <code>key</code>. + * + * @param key the message key. + * @return the message (or key if the message isn't found). + */ + public static String get(String key) + { + return get(key, (Object[])null); + } } \ No newline at end of file 1.7 +23 -1 cartridges/andromda-jsf2/src/main/resources/templates/jsf2/utils/MessagePhaseListener.java.vsl Index: MessagePhaseListener.java.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-jsf2/src/main/resources/templates/jsf2/utils/MessagePhaseListener.java.vsl,v retrieving revision 1.6 retrieving revision 1.7 diff -u -w -r1.6 -r1.7 --- MessagePhaseListener.java.vsl 28 May 2008 17:23:26 -0000 1.6 +++ MessagePhaseListener.java.vsl 28 May 2008 19:04:29 -0000 1.7 @@ -69,7 +69,24 @@ { javax.faces.context.FacesContext.getCurrentInstance().addMessage(null, (javax.faces.application.FacesMessage)iterator.next()); } - form.getClass().getMethod("clearJsfMessages", (Class[])null).invoke(form, (Object[])null); + // - set the messages title to use (if we have a severity of error or higher) + final javax.faces.application.FacesMessage.Severity severity = context.getMaximumSeverity(); + if (severity != null && severity.getOrdinal() >= javax.faces.application.FacesMessage.SEVERITY_ERROR.getOrdinal()) + { + final java.lang.Object request = context.getExternalContext().getRequest(); + if (request instanceof $jsfUtils.requestClassName) + { + String messagesTitle = (String)form.getClass().getMethod("get${stringUtils.capitalize($formMessagesProperty)}Title", (Class[])null).invoke(form, (Object[])null); + if (messagesTitle == null || messagesTitle.trim().length() == 0) + { + messagesTitle = Messages.get("errors.header", null); + } + (($jsfUtils.requestClassName)request).setAttribute(MESSAGES_TITLE, messagesTitle); + } + } + form.getClass().getMethod("clear${stringUtils.capitalize($formMessagesProperty)}", (Class[])null).invoke(form, (Object[])null); + form.getClass().getMethod("set${stringUtils.capitalize($formMessagesProperty)}Title", + new Class[]{java.lang.String.class}).invoke(form, new Object[]{null}); } } catch (final Exception exception) @@ -79,6 +96,11 @@ } } + /** + * The name of the property storing the title to use for faces messages in the request scope + */ + protected static final String MESSAGES_TITLE = "${formMessagesProperty}Title"; + @Override protected void handleAfterPhase(javax.faces.event.PhaseEvent event) { 1.3 +4 -1 cartridges/andromda-jsf2/src/main/resources/templates/jsf2/views/portlet/messages.xhtml.vsl Index: messages.xhtml.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-jsf2/src/main/resources/templates/jsf2/views/portlet/messages.xhtml.vsl,v retrieving revision 1.2 retrieving revision 1.3 diff -u -w -r1.2 -r1.3 --- messages.xhtml.vsl 27 May 2008 16:14:19 -0000 1.2 +++ messages.xhtml.vsl 28 May 2008 19:04:31 -0000 1.3 @@ -2,6 +2,9 @@ xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html"> <ui:composition> - <h:messages globalOnly="true" title="#{messages['errors.header']}" rendered="#{!hideGlobalMessages}"/> + <h:panelGrid columns="1" cellpadding="2" cellspacing="2" rendered="#{!hideGlobalMessages and !empty facesContext.maximumSeverity}"> + <h:outputText value="#{${formMessagesProperty}Title}" escape="false" rendered="#{!empty ${formMessagesProperty}Title}"/> + <h:messages globalOnly="true" showDetail="false"/> + </h:panelGrid> </ui:composition> </div> 1.12 +2 -2 cartridges/andromda-jsf2/src/main/resources/templates/jsf2/messages/messages.properties.vsl Index: messages.properties.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-jsf2/src/main/resources/templates/jsf2/messages/messages.properties.vsl,v retrieving revision 1.11 retrieving revision 1.12 diff -u -w -r1.11 -r1.12 --- messages.properties.vsl 23 May 2008 20:59:54 -0000 1.11 +++ messages.properties.vsl 28 May 2008 19:04:32 -0000 1.12 @@ -103,9 +103,9 @@ login.na=This feature is not available yet # -# Messages for the validator plugin +# Messages for validation # -errors.header=Errors +errors.header=You have one or more error(s) present: errors.required={0} is required. errors.minlength={0} can not be less than {1} characters. 1.7 +26 -0 cartridges/andromda-jsf2/src/main/resources/templates/jsf2/forms/FormImpl.java.vsl Index: FormImpl.java.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-jsf2/src/main/resources/templates/jsf2/forms/FormImpl.java.vsl,v retrieving revision 1.6 retrieving revision 1.7 diff -u -w -r1.6 -r1.7 --- FormImpl.java.vsl 28 May 2008 16:40:45 -0000 1.6 +++ FormImpl.java.vsl 28 May 2008 19:04:33 -0000 1.7 @@ -185,6 +185,32 @@ } /** + * The faces message title (used on a view). + */ + private String ${formMessagesProperty}Title; + + /** + * The optional faces message title to set (used on a view). If not set, the default title + * will be used. + * + * @param jsfMessagesTitle the title to use for the messages on the view. + */ + public void set${stringUtils.capitalize($formMessagesProperty)}Title(final String ${formMessagesProperty}Title) + { + this.${formMessagesProperty}Title = ${formMessagesProperty}Title; + } + + /** + * Gets the faces messages title to use. + * + * @return the faces messages title. + */ + public String get${stringUtils.capitalize($formMessagesProperty)}Title() + { + return this.${formMessagesProperty}Title; + } + + /** * Gets the maximum severity of the messages stored in this form. * * @return the maximum severity or null if no messages are present and/or severity isn't set. 1.17 +24 -0 cartridges/andromda-jsf2/src/main/resources/templates/jsf2/controllers/Controller.java.vsl Index: Controller.java.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-jsf2/src/main/resources/templates/jsf2/controllers/Controller.java.vsl,v retrieving revision 1.16 retrieving revision 1.17 diff -u -w -r1.16 -r1.17 --- Controller.java.vsl 28 May 2008 16:40:46 -0000 1.16 +++ Controller.java.vsl 28 May 2008 19:04:33 -0000 1.17 @@ -361,6 +361,30 @@ } /** + * Sets the messages title to use on the next view. + * + * @param messagesTitle the title to use. + */ + protected void setMessagesTitle(final String messagesTitle) + { + final Object form = this.resolveVariable("form"); + if (form != null) + { + try + { + final java.lang.reflect.Method method = form.getClass().getMethod( + "set${stringUtils.capitalize($formMessagesProperty)}Title", + new Class[]{java.lang.String.class}); + method.invoke(form, new Object[]{messagesTitle}); + } + catch (final Exception exception) + { + throw new RuntimeException(exception); + } + } + } + + /** * Gets the maximum severity of the messages stored in the current form. * * @return the maximum message severity. |