3 Stimmen

Verwendung von JBoss EL mit Websphere

Ich arbeite an einem Projekt, das auf Websphere laufen soll.

Ich verwende JSF/Facelets/Richfaces für dieses Projekt.

Ich möchte die JBoss EL-Implementierung verwenden, da sie den Aufruf von Methoden mit Parametern aus EL usw. ermöglicht.

... normalerweise wird dies erreicht, indem man das JBoss EL jar abruft und dieses in die web.xml einfügt:

 <context-param>
  <param-name>com.sun.faces.expressionFactory</param-name>
  <param-value>org.jboss.el.ExpressionFactoryImpl</param-value>
 </context-param>

Aber das funktioniert nicht ... Ich weiß nicht, ob es ein Problem mit Websphere ist oder ...???

Ich erhalte einen Stack-Trace, wenn ich die Seite aufrufe, die besagt, dass der EL nicht geparst werden kann, wenn ich einer Methode einen Parameter übergeben habe:

<a4j:commandLink value="Delete" action="#{mcsaAdmin.deleteLanguage(1234)}" />

Wenn man sich den Stacktrace anschaut, scheint er immer noch das standardmäßige sun EL zu verwenden:

Caused by: javax.el.ELException: Error Parsing: #{mcsaAdmin.deleteLanguage(1234)}
 at com.sun.el.lang.ExpressionBuilder.createNodeInternal(Unknown Source)
 at com.sun.el.lang.ExpressionBuilder.build(Unknown Source)
 at com.sun.el.lang.ExpressionBuilder.createMethodExpression(Unknown Source)
 at com.sun.el.ExpressionFactoryImpl.createMethodExpression(Unknown Source)
 at com.sun.facelets.tag.TagAttribute.getMethodExpression(TagAttribute.java:141)

Beachten Sie die Angabe 'com.sun.el.ExpressionFactoryImpl' anstelle von 'org.jboss.el.ExpressionFactoryImpl' wie oben angegeben ...

Mache ich etwas offensichtlich falsch? Hat jemand eine Idee... Ich verwende Standard-JSF-Implementierung von Majorra Projekt oder was auch immer auf Sun-Website und Richfaces 3.1.4 und Facelets 1.1.14 bereitgestellt.

1voto

calavera.info Punkte 1130

Vielleicht liegt das Problem nicht bei Websphere, sondern bei der JSF-Implementierung, da "com.sun.faces.expressionFactory" JSF-implementierungsspezifisch ist. Ich hatte das gleiche Problem, wenn ich MyFaces verwendet, für die die richtiger Name des Parameters ist "org.apache.myfaces.EXPRESSION_FACTORY".

0voto

Ravi S Punkte 61

Dies könnte auf ein Problem mit dem Klassenpfad zurückzuführen sein. Wohin haben Sie Ihr jboss el jar kopiert?

0voto

Arthur Ronald Punkte 32423

Sie haben Recht. einbeziehen. jboss-el.jar im Klassenpfad /WEB-INF/lib und in web.xml definieren

<context-param>
    <param-name>com.sun.faces.expressionFactory</param-name>
    <param-value>org.jboss.el.ExpressionFactoryImpl</param-value>
</context-param>

Aber Es gibt einige Einschränkungen. Siehe aquí

Wenn Sie einen guten Einblick in die Expression Language erhalten möchten, lesen Sie Erweitern der Java EE Unified Expression Language mit einem benutzerdefinierten ELResolver y FAQ über Expression Language

Grüße,

0voto

roel Punkte 1975

Haben Sie den Classloader richtig eingestellt? In Websphere müssen Sie den Classloader in mehreren Einstellungen festlegen. Setzen Sie den Klassenlader des Webmoduls auf "Parent last" und den Klassenlader der Anwendung auf "Parent last".

Wenn beide nicht auf dem letzten Elternteil sind, werden möglicherweise nicht Ihre eigenen Jars verwendet, sondern die mit Websphere bereitgestellten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X