2010-11-22 2 views
3

S'agit-il simplement d'une API définie par Java, qui doit être implémentée par des serveurs (par exemple), ou bien le JRE inclut également l'implémentation? Ce qui est que j'essayais de concaténer deux chaînes en utilisant '+' sur ma page JSF, mais il a lancé NumberFormatException. Il semble qu'il essayait d'analyser mes chaînes en utilisant Long.parseLong().Que contient le paquet com.sun.el?

J'ai été surpris de voir ce paquet dans la trace de la pile, car je pensais que ces expressions étaient des expressions Groovy. Cela ne semble certainement pas être Groovy mais d'autres EL.

J'utilise le serveur Weblogic.

Répondre

6

Il contient l'implémentation de Sun de l'API javax.el spécifiée par EL specification. Cette API fait partie de Java EE, pas de Java SE. Les implémenteurs doivent fournir une implémentation concrète de l'API abstraite afin que tous les travaux définis par l'API soient effectués. Java EE est fondamentalement une grande spécification abstraite. Les servletcontainers/applicationservers comme Weblogic, Tomcat, Glassfish, etc. offrent les implémentations concrètes. En ce qui concerne votre problème réel, non, vous ne pouvez en effet pas concaténer des chaînes dans EL en utilisant l'opérateur + comme ça. L'opérateur + dans EL suppose que les deux côtés sont Number, pour les nombres ronds cela correspond à Long. C'est spécifié dans la spécification EL.

Vous pouvez toutefois simplement utiliser plusieurs expressions comme suit pour "concat" des chaînes.

<h:outputText value="#{user.firstName} #{user.lastName}" /> 
+0

Dans mon cas, la concaténation de chaînes est difficile. J'ai une expression en EL comme - # {condition? chaîne1: chaîne2 + chaîne3}. J'ai donc besoin d'une fonction el pour la concaténation, puisque + n'est pas une option. – AppleGrew

+1

' ' – BalusC

Questions connexes