有人可以推荐一个类似于JSP EL(表达式语言)的独立应用程序的模板/消息格式化框架吗?
我希望能够实例化某种对象,并为其提供类似于以下的模板:
Dear ${customer.firstName}. You order will be dispatched on ${order.estimatedDispatchDate}
提供一个上下文,其中包括参数对象的值字典(在这种情况下,比如一个名为'customer'的Customer类型对象和一个名为'order'的Order类型对象)。我知道有很多模板框架-其中许多可以在Web应用程序上下文之外工作,但我并不认为这是一个笨重的模板框架。只是Java已经提供的基本Message Format功能的更好版本。
例如,我可以使用java.text.MessageFormat实现上述功能,只需使用模板(或者他们称之为'pattern'):
Dear {0}. You order will be dispatched on {1,date,EEE dd MMM yyyy}
我可以在调用Java程序时向其传递一个对象数组。
new Object[] { customer.getFirstName(), order.getEstimatedDispatchDate() };
然而,在这种用法中,代码和模式是密切相关的。虽然我可以将模式放在资源属性文件中,但代码和模式需要彼此了解详细信息。使用类似EL的系统,代码和模式之间的合同将处于更高的级别(例如客户和订单,而不是customer.firstName和order.estimatedDispatchDate),这使得更容易改变消息的结构、顺序和内容,而不需要改变任何代码。