2010-11-22 9 views
3

Ist dies nur eine von Java definierte API, die von (etwa) Servern implementiert wird, oder die JRE die Implementierung ebenfalls enthält?Was enthält das Paket com.sun.el?

Die Sache ist, dass ich versuchte, zwei Zeichenfolgen mit '+' auf meiner JSF-Seite zu verketten, aber es war NumberFormatException. Es scheint, dass es versuchte, meine Zeichenfolgen mit Long.parseLong() zu analysieren.

Ich war überrascht, dieses Paket im Stack-Trace zu sehen, wie ich dachte, diese Ausdrücke sind Groovy Ausdrücke. Das scheint sicherlich nicht Groovy zu sein, sondern eine andere EL.

Ich benutze Weblogic-Server.

Antwort

6

Es enthält Sun Implementierung des javax.el API, die von EL specification angegeben ist. Diese API ist Teil von Java EE und nicht von Java SE. Implementierer müssen eine konkrete Implementierung der abstrakten API bereitstellen, so dass alle von API definierten Arbeiten ausgeführt werden. Java EE ist im Grunde eine große abstrakte Spezifikation. Die Servletcontainer/Applicationserver wie Weblogic, Tomcat, Glassfish usw. bieten die konkrete Implementierungen.

In Bezug auf Ihr tatsächliches Problem, nein, Sie können tatsächlich nicht verketten Strings in EL mit + Operator wie das. Der Operator + in EL nimmt an, dass die beiden Seiten eine Number sind, für runde Zahlen ist das Long. Das ist in der EL-Spezifikation angegeben.

Sie können jedoch mehrere Ausdrücke wie folgt verwenden, um Strings "concat".

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

In meinem Fall ist die String-Verkettung schwierig. Ich habe en EL Ausdruck wie - # {Bedingung? string1: string2 + string3}. Also brauche ich eine el-Funktion für die Verkettung, da + keine Option ist. – AppleGrew

+1

' ' – BalusC