JSTL/JSP EL (Expression Language) in a non JSP (standalone) context

前端 未结 10 1637
一向
一向 2020-12-01 08:28

Can anyone recommend a framework for templating/formatting messages in a standalone application along the lines of the JSP EL (Expression Language)?

I would expect t

相关标签:
10条回答
  • 2020-12-01 09:05

    I would go for the Spring Expression language:

    http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html

    A few examples which demonstrate the power (the first two are from the documentation):

    int year = (Integer) parser.parseExpression("Birthdate.Year + 1900").getValue(context);
    
    String city = (String) parser.parseExpression("placeOfBirth.City").getValue(context);
    
    // weekday is a String, e.g. "Mon", time is an int, e.g. 1400 or 900
    {"Thu", "Fri"}.contains(weekday) and time matches '\d{4}'
    

    Expressions can also use object properties:

    public class Data {
        private String name; // getter and setter omitted
    }
    
    Data data = new Data();
    data.setName("John Doe");
    
    ExpressionParser p = new SpelExpressionParser();
    Expression e = p.parseExpression("name == 'John Doe'");
    Boolean r = (Boolean) e.getValue(data); // will return true
    
    e = p.parseExpression("Hello " + name + ", how are you ?");
    String text = e.getValue(data, String.class); // text will be "Hello John Doe, how are you ?"
    
    0 讨论(0)
  • 2020-12-01 09:05

    Re: Jasper and Juel being built for 1.5: And then I discovered RetroTranslator (http://retrotranslator.sourceforge.net/). Once retrotranslated, EL and Jasper works like a charm

    0 讨论(0)
  • 2020-12-01 09:07

    AAh. Whereas with MessageFormat, I can do

    Dear {0}. Your order will be dispatched on {1,date,EEE dd MMM yyyy}
    

    where parameter #1 is a Date object and it gets formatted according to the pattern, there is no equivalent in EL.

    In JSP, I would have used, perhaps, a format tag. In this standalone example, I am going to have to format the Date as a String in my code prior to evaluating the expression.

    0 讨论(0)
  • 2020-12-01 09:11

    Freemarker would do exactly what you need. This is a template engine with a syntax very similar to JSP :

    http://freemarker.org/

    0 讨论(0)
  • 2020-12-01 09:15

    I would recommend looking into Apache Velocity. It is quite simple and lightweight.

    We are currently using it for our e-mail templates, and it works very well.

    0 讨论(0)
  • 2020-12-01 09:17

    You can use Casper very similar to jsp and easy to use : Casper

    0 讨论(0)
提交回复
热议问题