You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Henri Biestro (JIRA)" <ji...@apache.org> on 2016/06/09 20:33:20 UTC

[jira] [Resolved] (JEXL-198) JxltEngine Template deos not expose pragmas

     [ https://issues.apache.org/jira/browse/JEXL-198?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Henri Biestro resolved JEXL-198.
--------------------------------
       Resolution: Fixed
    Fix Version/s: 3.0.1

Added the submitted code (thanks!):
src/main/java/org/apache/commons/jexl3/JxltEngine.java
src/main/java/org/apache/commons/jexl3/internal/TemplateScript.java
src/test/java/org/apache/commons/jexl3/PragmaTest.java
Committed revision 1747593.

The strict compatibility policy would force a different interface name (or package name change). I suspect that no one will actually be facing a compatibility issue.

> JxltEngine Template deos not expose pragmas
> -------------------------------------------
>
>                 Key: JEXL-198
>                 URL: https://issues.apache.org/jira/browse/JEXL-198
>             Project: Commons JEXL
>          Issue Type: Improvement
>    Affects Versions: 3.0, 3.0.1, 3.1
>         Environment: any
>            Reporter: Terefang Verigorn
>            Assignee: Henri Biestro
>            Priority: Minor
>             Fix For: 3.0.1
>
>
> JexlScript objects have a getPragmas() method which is awesome useful to communicate static information after compilation/parsing but before evaluation.
> JxltEngine.Template objects lack that method.
> usage case: JexlServlet vs JexlTemplateServlet
> JexlServlet/output-csv.jxp:
> {code}
> #pragma output-charset "UTF-8"
> #pragma output-content-type "text/csv"
> _out.println("col1;col2;col3;col4;col5");
> for(row : _data)
> {
> _out.print(row.col1+";");
> _out.print(row.col2+";");
> _out.print(row.col3+";");
> _out.print(row.col4+";");
> _out.println(row.col5);
> }
> {code}
> JexlTemplateServlet/output-csv.jxt:
> {code}
> $$ #pragma output-charset "UTF-8"
> $$ #pragma output-content-type "text/csv"
> col1;col2;col3;col4;col5
> $$ for(row : _data) {
> ${row.col1};${row.col2};${row.col3};${row.col4};${row.col5}
> $$ }
> {code}
> but since we cant get the pragmas from the template we have to write;
> {code}
> $$ http_response.setCharset("UTF-8");
> $$ http_response.setContentType("text/csv");
> col1;col2;col3;col4;col5
> $$ for(row : _data) {
> ${row.col1};${row.col2};${row.col3};${row.col4};${row.col5}
> $$ }
> {code}
> The actual case is that the templating engine cant be used "technology agnostic", as we might want to use the same script for both http and mail (or sms, xmpp, etc) formatting



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)