mrc logo mrc logo
  • m-Power m-Power
    What is m-Power?
    Overview Demos Build Process Case Studies Specs Pricing Trial
    m-Power Resources
    Overview How-To Videos Webinars & Podcasts White Papers Fact Sheets
  • Solutions Solutions
    What does m-Power build?
    Overview Database Front-Ends Reporting CRM Systems Business Intelligence Dashboards Inventory Management Mobile Apps ERP Enhancements Modernization Spreadsheets to the web MS Access to the web B2B/Web Portals Scheduling Embedded Analytics Web Forms Workflow Data Exploration Budgeting & Forecasting APIs and Web Services Db2 Web Query Alternative
    Solutions by Industry
    Overview Manufacturing Government Foodservice Software Vendors Logistics & Supply Chain Software Consultants Healthcare
  • Services Services
    Development Services Training Mentoring
  • About About
    Overview Partners Press Releases Careers Events Contact Blog
  • Support Support
    Support Home FAQ Documentation Customer Portal Enhancements Updates Roadmap Techblog
Try m-Power

m-Power Manual

Browse:

  • Home
  • Freemarker
  • Freemarker Overview
Back to Manual

Freemarker Overview

 

In all templates, m-Power uses the Freemarker template engine to create your Java Servlet Applications. While Freemarker itself is not a "complete" coding language, it is quite powerful and rich with many customizable options.

When you generate any m-Power application, you will see code similar to this in the source of your HTML:

<!-- <#list table_rows as row> -->

<tr> <td nowrap class="${rowClass(row_index)}" align="right">

${row.CUSNO?html}

</td><td nowrap class="${rowClass(row_index)}" align="right">

${row.CMPNO?html}

</td><td nowrap class="${rowClass(row_index)}" align="left">

${row.CNAME?html}

</td> </tr>

<!-- </#list> -->

The first and last lines of the code #list and /#list dictate to your Java Servlet to repeat this section of code for as many records as are requested to be displayed on the screen.

Within m-Power, fields are noted: ${row.CMPNO?html} where CMPNO is the name of your Field. The $ denotes that a Substitution is about to occur. {row. Indicates the location the field is to come from. Alternatives to the {row. Syntax would be row0.FIELDNAME for Single Record Templates, and ${grandTotal, ${subTotal1, ${subTotal2 for Reports. The CMPNO indicates the name of the Field from your Database. Lastly, the ?html indicates the field's encoding.

Note: Any code outside of the <#list> and </#list> tags will only be preformed once.

Basic Coding with Freemarker within Presentation (HTML) Layer

Creating New Variables

Freemarker structure is fully customizable to include some coding placed directly within the presentation (HTML) layer. To assign a variable, use the following syntax:

<!--<#assign variablename=value>-->

Note: For computability reasons within m-Painter, you must wrap all #assign tags within HTML comment tags.

Examples of the #assign tag.

<!--<#assign counter=0>-->

<!--<#assign counter=counter+1>-->

<!--<#assign sometext="Sample Text">-->

To use these variables, simply use the following text: ${counter} where counter is your newly created variable name. Note: There is no "row." logic.

If you wish to create a variable and assign a value from your database, please use the following syntax:

<!--<#assign sometext= row.FIELDNAME>--> Note: Using ${row.FIELDNAME} will cause a Run-Time Error.

If & If/Else Looping

You can also utilize looping within the HTML layer as well. The syntax is as follows:

<!--<#if variable RELATIONSHIP value>--> Note: For computability reasons within m-Painter, you must wrap all #if tags within HTML comment tags.

Code inside If statement

<!--</#if>-->

Valid relationships include all standard relationships, including:

== — Equals

> — Greater than

>= — Greater than or Equal to

< — Less than

< — Less than or Equal to

!= — Not equal to

You can also use Else logic as well:

<!--<#if variable == 0>-->

<!--<#assign variable=7>-->

Variable is equal to 7

<!--<#else>--> Note: For computability reasons within m-Painter, you must wrap all #else tags within HTML comment tags.

Variable is equal to 0

<!--</#if>-->

If you wish to use a Database value within your IF statement, please use the following syntax:

<!--#if sometext== row.FIELDNAME>--> Note: Using ${row.FIELDNAME} will cause a Run-Time Error.

Common Variables

${visitor.user} — Only available when mrc Security has been activated. Will display the User's Sign on name.

${visitor.library} — Will return the name of the Current Data Dictionary.

${visitor.appName} — Will return the Application name. For instance, Report 10 would return R00010, unless specifically changed within the Application Defaults screen.

${visitor.sessionID} — Will return the 32 character Session ID. This ID is unique by Browser Session, thus no two browsers can have the same session ID.

${visitor.remoteIp} — This variable will return the IP address of the Client's browser.

${visitor.loginDate} — This variable will return the Date of the Initial login. It is in the format YYYY-MM-DD. In the absence of mrc Security, it will display the time the application was first accessed.

${visitor.loginTime} — This variable will return the Time of the Initial login. It is in the format HH:MM:SS. In the absence of mrc Security, it will display the time the application was first accessed.

${visitor.userAgent} — This variable will return the full User Agent string from the client's browser.

Common Date Variables
All values are returned in the YYYY-MM-DD format. Variables that return a range are separated by a space. Fiscal dates are determined from the 'fiscal_month' setting in the mrcjava/WEB-INF/classes/mrc_runtime.properties file (i.e. fiscal_month=5).

Assuming the current date is 2018-01-10, the date variables would return the following values:

${visitor.today} — Current date (2018-01-10)
${visitor.tomorrow} — Tomorrow's date (2018-01-10)
${visitor.yesterday} — Yesterday's date (2018-01-09)
${visitor.thisweek} — Sunday to Saturday of the current week (2018-01-07 2018-01-13)
${visitor.thisweektodate} — Sunday of the current week to the current date (2018-01-07 2018-01-10)
${visitor.lastweektodate} — Sunday of the previous week to the current week day of the previous week (2017-12-31 2018-01-03)
${visitor.lastweek} — Sunday and Saturday of the previous week (2017-12-31 2018-01-06)
${visitor.nextweek} — Sunday to Saturday of the following week (2018-01-14 2018-01-20)
${visitor.thismonth} — First day of the current month to the last day of the current month (2018-01-01 2018-01-31)
${visitor.thismonthtodate} — First day of the current month to the current day of the current month (2018-01-01 2018-01-10)
${visitor.nextmonth} — First day of the following month to the last day of the following month (2018-02-01 2018-02-28)
${visitor.lastmonth} — First day of the previous month to the last day of the previous month (2017-12-01 2017-12-31)
${visitor.lastmonthtodate} — First day of the previous month to the current day of the previous month (2017-12-01 2017-12-10)
${visitor.thisquarter} — First day of the current quarter to the last day of the current quarter (2018-01-01 2018-03-31)
${visitor.lastquarter} — First day of the previous quarter to the last day of the previous quarter (2017-10-01 2017-12-31)
${visitor.thisyear} — First day of the current year to the last day of the current year (2018-01-01 2018-12-31)
${visitor.nextyear} — First day of the following year to the last day of the following year (2019-01-01 2019-12-31)
${visitor.lastyear} — First day of the previous year to the last day of the previous year (2017-01-01 2017-12-31)
${visitor.thisyeartodate} — First day of the current year to the current date (2018-01-01 2018-01-10)
${visitor.lastyeartodate} — First day of the previous year to the current day of the previous year (2017-01-01 2017-01-10)
${visitor.thisquarterfiscal} — First day of the current fiscal quarter to the last day of the current fiscal quarter (2017-11-01 2018-01-31)
${visitor.lastquarterfiscal} — First day of the previous fiscal quarter to the last day of the previous fiscal quarter (2017-08-01 2017-10-31)
${visitor.thisyearfiscal} — First day of the current fiscal year to the last day of the current fiscal year (2017-05-01 2018-04-30)
${visitor.lastyearfiscal} — First day of the previous fiscal year to the last day of the previous fiscal year (2016-05-01 2017-04-30)
${visitor.thisyearfiscaltodate} — First day of the current fiscal year to the current date (2017-05-01 2018-01-10)
${visitor.lastyearfiscaltodate} — First day of the previous fiscal year to the current day of the previous fiscal year (2016-05-01 2017-01-10)

How to Implement your own Freemarker Custom Changes

To make Freemarker changes, compile your application and enter m-Painter. Click the "Source" button and find your <#list> section using m-Painter's Binoculars. It is at this location within the code that you can make all necessary changes.

Links to Useful Freemarker Resources

— Useful Freemarker String Functions

— Useful Freemarker Numeric Functions

— Controlling Page Layout using If Logic

— Freemarker Site

Created: September 12, 2008 | Modified: April 8, 2020

Search


Browse By Category

Build Process (13)
Starting with m-Power (8)
Retrievals (10)
Reports (15)
Summaries (4)
Maintainers (17)
Graphs (8)
m-Power Data Explorer (4)
General (24)
Calculations (5)
Utilities (9)
m-Power Administration (23)
Security (11)
Freemarker (6)
m-Painter (29)
Form Validation (5)
External Objects & UDFs (12)
Deprecated Documentation (23)
Bootstrap Templates (7)

Popular Tags

Email Prompt Screens Admin Performance Java Maintainer Advanced Maintainers Popular m-Painter Graphs Security SQL Form Validation Record Selections Production Data Dictionary mrc-Productivity Series RPG Tomcat Graphing Summaries Bar Graphs Build Process Retrievals Dates Parameters Administration Application Properties Freemarker Getting Started Report DB2 Excel Bootstrap Templates Compiling App Properties Dropdowns Retrieval Graph Properties External Objects Database Calculations Video Reports

See all tags »

michaels, ross & cole, ltd. (mrc)

Privacy Policy Cookie Policy Cookie Settings Notice at Collection Do Not Sell or Share My Personal Information

mrc (US)

2001 Midwest Road
Suite 310
Oak Brook, IL 60523
630-916-0662

mrc (UK)

Mortlake Business Centre
20 Mortlake High Street
London, SW14 8JN
+44-20-335-59566


© 2024 mrc. All rights reserved.