Java: Comment évaluer une expression EL - autonome (en dehors de tout framework web) sans mise en œuvre d'interfaces?
Je voudrais utiliser EL dans mon application. Mais je ne trouve pas de tutoriel. Je finissent généralement besoin d'une interface pour laquelle je n'ai pas de mise en œuvre.
J'ai une carte des objets, et je veux une expression de chaîne comme Bonjour, ${person.name}
être évalué à une chaîne.
Comment puis-je réaliser que, en utilisant l'une des Communes d'EL, javax.el, OGNL, ou un tel? Doit être une bibliothèque autonome.
Et je savoir Java: utilisation de EL en dehors J2EE, et ont vu JSTL/JSP EL (Expression Language) dans un non JSP (autonome) contexte. Ce n'est pas ce que je cherche.
Ce que je cherche, c'est un exemple de ce que la dépendance à ajouter, puis comment initialiser un analyseur qui aura:
private static String evaluateEL( String expr, Map<String, String> properties );
et me permettent de faire:
String greet = evaluateEL("Hello ${person.name}",
new HashMap(){{
put("person", new Person("Ondra"));
}}
);
Et j'en ai besoin pour utiliser certaines valeur rationnelle, par exemple ""
sur null
au lieu de lancer des entrées en phase nationale.
Aussi Vitesse a une syntaxe similaire que EL.
OGNL peut-être, mais leur site ne fonctionne pas de l'ATM.
OriginalL'auteur Ondra Žižka | 2013-06-10
Vous devez vous connecter pour publier un commentaire.
Il y a tout un tas de EL moteurs, dont plus de mettre en œuvre l'Expression de Java API de Langage.
Communes EL (http://jakarta.apache.org/commons/el/)
La mise en œuvre de la JSP EL API qui a toujours existé. Cette bibliothèque peut être trouvé dans de nombreux récipients de JSP (Tomcat par exemple) ou servir de base à l'intérieur de nombreux fournisseurs de serveurs J2EE.
OGNL (http://www.ognl.org/)
L'un des plus expressifs ELs aujourd'hui disponibles et largement utilisés avec WebWork (Struts 2) et la Tapisserie.
MVEL (https://github.com/mvel/mvel)
Un nouveau venu à EL qui fait partie de la MVFlex/Valhalla projet. Caractéristiques de regarder plus en ligne avec OGNL de l'offre avec l'invocation de méthode et quelques intéressantes support des expressions régulières.
(Unifiée) Langage d'Expression (https://jcp.org/aboutJava/communityprocess/final/jsr341/index.html et http://jcp.org/en/jsr/detail?id=245)
Standard expression de la langue d'abord introduit dans Java EE 5 (EL 2.1) et renforcée dans Java EE 6 (EL 2.2) et Java EE 7 (EL 3.0). L'implémentation de référence disponible à partir de Glassfish projet -
Unifiée Langage D'Expression.
JEXL (http://jakarta.apache.org/commons/jexl/)
Une mise en œuvre basé sur la Vitesse de l'analyseur. De ce fait, il agit plus comme un limitées de template solution avec des choses comme l'invocation de méthode.
Source
Pour l'instant j'ai fini avec ce code à l'aide BeanUtils - laid, mais fonctionne.
OriginalL'auteur Ondra Žižka
J'en ai trouvé un à http://juel.sourceforge.net/guide/start.html .
Toujours pas exactement 1-liner, mais à proximité.
Maven deps:
<artifactId>juel-impl</artifactId>
, sinon, vous avez deux tendances contradictoires EL-Api.Basé sur le commentaire que j'ai changé
artifactId
dejuel
àjuel-impl
, mais sans le tester.J'ai mis à jour les versions. Ressemble à la JUEL impl a changé
groupId
àde.odysseus.juel
.OriginalL'auteur Ondra Žižka