2010-01-06 10 views
3

Je suis en train de réaliser un projet sur Websphere. Je suis en train d'utiliser JSF/Facelets/Richfaces pour ce projet.Utilisation de JBoss EL avec Websphere

Je veux utiliser l'implémentation EL JBoss car il permet d'appeler des méthodes avec des paramètres de EL etc.

... ce qui est habituellement accompli en obtenant le pot EL JBoss puis mettre cela dans le web.xml:

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

Cependant cela ne fonctionne pas ... Je ne sais pas si c'est un problème avec Websphere ou ... ???

je reçois une trace de la pile en allant à la page en disant qu'il ne peut pas analyser l'EL où j'ai passé une méthode un paramètre:

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

En regardant le stacktrace il semble utiliser encore la norme soleil EL:

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) 

Notez le 'com.sun.el.ExpressionFactoryImpl' au lieu de 'org.jboss.el.ExpressionFactoryImpl', comme indiqué ci-dessus ...

Suis-je faire quelque chose obvi est-ce faux? Tout le monde a des idées ... J'utilise la mise en œuvre JSF standard du projet majorra ou tout ce qui est fourni sur le site sun et richfaces 3.1.4 et facelets 1.1.14.

+0

avez-vous déjà résolu cela? Je suis confronté au même problème. – Shahzeb

Répondre

0

cela peut être dû à un problème de portée de chemin de classe. Où avez-vous copié votre jboss el jar?

0

Vous avez raison. Inclure jboss-el.jar dans classpath/WEB-INF/lib et définir dans web.xml

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

Mais Il y a une certaine limitation. Voir here

Si vous voulez savoir une bonne insith sur Expression Language, voir Extending the Java EE Unified Expression Language with a Custom ELResolver et FAQ about Expression Language

salutations

+0

J'ai placé le fichier jar dans une configuration lib partagée sur le serveur. J'ai essayé de définir le chargeur de classe à parent_first et parent_last: \ Thx pour la note sur les limitations, mais je suis assez familier avec EL juste jamais utilisé spécifiquement de cette façon dans WAS :( – rat

1

Peut-être que le problème est pas avec Websphere, mais avec la mise en œuvre de JSF, parce que « com.sun .faces.expressionFactory "est spécifique à l'implémentation JSF. J'ai eu le même problème quand j'ai utilisé MyFaces pour lequel le correct param name est "org.apache.myfaces.EXPRESSION_FACTORY".

0

Avez-vous défini le chargeur de classe correct? Dans Websphere, vous devez définir le chargeur de classe dans plusieurs paramètres. Définissez le chargeur de classe de module Web sur Parent last et le chargeur de classe d'application sur parent en dernier.

Si les deux ne sont pas sur le dernier parent, vos propres fichiers jar peuvent ne pas être utilisés, mais à la place ceux fournis avec websphere.