- Revision
- 822
- Author
- mauro
- Date
- 2008-09-09 04:45:57 -0500 (Tue, 09 Sep 2008)
Log Message
WAFFLE-94: Added FTL access to message resources, exposed via MessagesContext.
Modified Paths
- trunk/examples/freemarker-example/src/main/webapp/people/manage.ftl
- trunk/waffle-core/src/main/java/org/codehaus/waffle/i18n/DefaultMessagesContext.java
- trunk/waffle-core/src/main/java/org/codehaus/waffle/i18n/MessagesContext.java
- trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMessagesContext.java
Added Paths
Diff
Modified: trunk/examples/freemarker-example/src/main/webapp/people/manage.ftl (821 => 822)
--- trunk/examples/freemarker-example/src/main/webapp/people/manage.ftl 2008-09-06 13:41:56 UTC (rev 821) +++ trunk/examples/freemarker-example/src/main/webapp/people/manage.ftl 2008-09-09 09:45:57 UTC (rev 822) @@ -1,4 +1,5 @@ <#import "/ftl/waffle/form.ftl" as w> +<#import "/ftl/waffle/i18n.ftl" as i> <?xml version="1.0" encoding="UTF-8"?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> @@ -14,13 +15,13 @@ <table> <tr> <th>Id</th> - <th>First Name</th> - <th>Last Name</th> - <th>Email</th> - <th>Date of Birth</th> - <th>Type</th> - <th>Skills</th> - <th>Select</th> + <th><@i.messageFor "firstName" "First"/></th> + <th><@i.messageFor "lastName" "Last"/></th> + <th><@i.messageFor "email" "Email"/></th> + <th><@i.messageFor "dateOfBirth" "Date of Birth"/></th> + <th><@i.messageFor "type" "Type"/></th> + <th><@i.messageFor "skills" "Skills"/></th> + <th><@i.messageFor "select" "Select"/></th> </tr> <#list people as person> <tr class="odd">
Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/i18n/DefaultMessagesContext.java (821 => 822)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/i18n/DefaultMessagesContext.java 2008-09-06 13:41:56 UTC (rev 821) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/i18n/DefaultMessagesContext.java 2008-09-09 09:45:57 UTC (rev 822) @@ -19,10 +19,16 @@ */ public class DefaultMessagesContext implements MessagesContext, Startable { private final HttpServletRequest request; + private final MessageResources resources; private final Map<String, String> messages = new HashMap<String, String>(); public DefaultMessagesContext(HttpServletRequest request) { + this(request, new DefaultMessageResources()); + } + + public DefaultMessagesContext(HttpServletRequest request, MessageResources resources) { this.request = request; + this.resources = resources; } public void addMessage(String key, String message) { @@ -45,6 +51,10 @@ messages.clear(); } + public MessageResources getResources() { + return resources; + } + public void start() { request.setAttribute(Constants.MESSAGES_KEY, this); } @@ -52,4 +62,5 @@ public void stop() { // do nothing } + }
Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/i18n/MessagesContext.java (821 => 822)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/i18n/MessagesContext.java 2008-09-06 13:41:56 UTC (rev 821) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/i18n/MessagesContext.java 2008-09-09 09:45:57 UTC (rev 822) @@ -9,7 +9,7 @@ /** * MessagesContext holds user business-level messages. Controllers can depend on it and use it to pass messages to the * view. It is not meant to display validation error messages, which are designed to be handled via the - * [EMAIL PROTECTED] org.codehaus.waffle.validation.ErrorsContext}. + * [EMAIL PROTECTED] org.codehaus.waffle.validation.ErrorsContext}. The MessagesContext also exposes to the view the MessageResources. * * @author Mauro Talevi * @see org.codehaus.waffle.validation.ErrorsContext @@ -26,5 +26,7 @@ void clearMessages(); + MessageResources getResources(); + }
Modified: trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMessagesContext.java (821 => 822)
--- trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMessagesContext.java 2008-09-06 13:41:56 UTC (rev 821) +++ trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMessagesContext.java 2008-09-09 09:45:57 UTC (rev 822) @@ -2,6 +2,7 @@ import java.util.List; +import org.codehaus.waffle.i18n.MessageResources; import org.codehaus.waffle.i18n.MessagesContext; public class StubMessagesContext implements MessagesContext { @@ -24,4 +25,8 @@ return 0; } + public MessageResources getResources() { + return null; + } + }
Added: trunk/waffle-resources/src/main/resources/ftl/waffle/i18n.ftl (0 => 822)
--- trunk/waffle-resources/src/main/resources/ftl/waffle/i18n.ftl (rev 0) +++ trunk/waffle-resources/src/main/resources/ftl/waffle/i18n.ftl 2008-09-09 09:45:57 UTC (rev 822) @@ -0,0 +1,16 @@ +<#ftl strip_whitespace=true> +<#-- + * A collection of FTL (Freemarker Template Language) functions and macros for I18N + * + * @author Mauro Talevi + --> + +<#-- + * Shows a message for the given key from the messages resources + * + * @param key the message key + * @param default the default message value if message resources or key are not found (defaults to "") + --> +<#macro messageFor key default=""> + <#if messages?exists && messages.resources?exists><#assign message=messages.resources.getMessageWithDefault(key,default)/><#else><#assign message=default/></#if>${message} +</#macro>
To unsubscribe from this list please visit:
